If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: www.joachim-breitner.de/blog - Blog – Joachim Breitner's Home.

site address: joachim-breitner.de redirected to: www.joachim-breitner.de/blog

site title: Blog – Joachim Breitner s Homepage...

Our opinion (on Tuesday 16 April 2024 7:30:58 GMT):

website (probably) only for adults * website (probably) only for adults ! YELLOW status (not for everyone) - not for everyone
After content analysis of this website we propose the following hashtags:


Proceed to the page?Powered by: Very Tiny URL Shortener at http://vturl.net VeryTinyURL

Meta tags:

Headings (most frequently used words):

the, left, sharing, what, is, recursion, combinators, parser, fro, lean, via, through, half, convenient, ulterior, oplss, or, motivation, it, ingredients, bubblewrapping, won, three, happen, script, selective, rough, corners, joachim, years, cont, thoughts, closing, meta, going, tricky, example, larger, proprioception, later, doing, be, will, excited, am, why, back, to, of, giving, retrospective, github, your, squash, joining, podcast, interlude, haskell, committee, with, steering, ghc, environment, development, sandboxed, blog, homepage, prs, one, nonces, preprint, ecdsa, bitcoin, breitner, case, curious, def, rec, on, pearl, click, icfp, dblp, dois, from, bibliographies, bibtex, generating, recursive, abstract,

Text of the page (most frequently used words):
the (330), and (188), that (103), for (75), #this (71), #with (58), #parser (55), tok (50), not (41), but (38), #have (36), are (34), can (33), #some (32), #haskell (32), #ghci (27), about (26), #from (25), was (24), #like (22), there (22), just (21), parse (21), which (21), dev (20), bind (20), more (19), will (19), #committee (18), when (18), data (17), what (17), pure (17), 1145 (16), let (16), you (15), out (15), where (15), use (15), one (15), aaa (15), recursive (15), bnf (15), memoise (14), rather (14), atom (14), library (14), also (14), left (14), language (14), run (13), paper (13), should (13), want (13), ident (13), yet (13), all (13), example (13), proposal (13), even (13), cons (13), here (13), does (13), secretary (12), work (12), using (12), bib (11), sharing (11), instance (11), type (11), list (11), seems (11), english (11), access (11), these (11), sat (11), get (11), now (11), did (11), they (11), comments (10), propriocept (10), 2023 (10), published (10), well (10), proposals (10), key (10), sections (10), recursion (10), string (9), then (9), process (9), could (9), used (9), good (9), than (9), would (9), code (9), who (9), other (9), them (9), too (9), maybe (9), half (8), talk (8), going (8), again (8), rulerhs (8), your (8), very (8), our (8), little (8), see (8), unp (8), import (8), has (8), unique (8), dblp (8), container (8), grammar (8), lean (8), home (8), pdigit (8), define (8), nice (7), need (7), something (7), bibtex (7), find (7), github (7), rule (7), bin (7), case (7), already (7), found (7), simon (7), nix (7), functional (7), way (7), start (7), prod (7), development (7), sum (7), environment (7), someone (7), likely (7), current (7), user (7), parsers (7), around (7), combinator (7), few (7), year (7), most (7), system (7), before (7), pnum (7), things (7), how (7), time (7), less (7), implementation (7), programming (7), ghc (7), mkp (7), without (6), set (6), applications (6), snoc (6), come (6), digital (6), sys (6), only (6), still (6), each (6), blog (6), same (6), know (6), via (6), new (6), idea (6), actually (6), combinators (6), withmemo (6), over (6), share (6), while (6), world (6), much (6), interp (6), role (6), useful (6), people (6), two (6), back (6), first (6), wrote (6), podcast (6), numexp (6), because (6), peyton (6), bitcoin (6), squash (6), members (6), jones (6), every (6), bit (6), long (5), computer (5), project (5), years (5), etc (5), why (5), https (5), configuration (5), clearly (5), script (5), directory (5), char (5), among (5), discussion (5), quite (5), put (5), nothing (5), equations (5), feedback (5), underlying (5), shepherd (5), its (5), function (5), ben (5), open (5), bnfp (5), their (5), had (5), into (5), num (5), doing (5), unsafeperformio (5), heap (5), richard (5), x11 (5), convenient (5), research (5), sometimes (5), running (5), make (5), down (5), really (5), fix (5), file (5), files (5), inside (5), secret (5), instead (5), particular (5), such (5), nonce (5), subs (5), build (5), works (5), look (5), small (5), call (5), rec (5), definition (5), pwd (5), usr (5), part (5), writing (5), curious (5), socket (5), doi (4), extra (4), return (4), however (4), handle (4), term (4), fresh (4), thanks (4), nixos (4), authors (4), needed (4), isspace (4), itself (4), always (4), take (4), yaml (4), since (4), lit (4), quote (4), def (4), forward (4), accept (4), vscode (4), main (4), member (4), outside (4), rhs (4), seq (4), concrete (4), tmp (4), nonterm (4), parseatom (4), keys (4), aaaa (4), myself (4), setup (4), config (4), nvim (4), change (4), naturally (4), allows (4), available (4), joachim (4), happen (4), far (4), once (4), done (4), called (4), git (4), form (4), tools (4), don (4), motivation (4), full (4), interesting (4), merge (4), followed (4), fro (4), step (4), working (4), started (4), point (4), tried (4), able (4), help (4), memory (4), breitner (4), squasher (4), got (4), involved (4), agda (4), separate (4), int (4), including (4), later (3), job (3), citation (3), eventually (3), parseseq (3), lower (3), projects (3), show (3), probably (3), proc (3), off (3), clear (3), great (3), fmap (3), cmd (3), conf (3), libraries (3), theorem (3), parserule (3), silence (3), isn (3), non (3), easily (3), fun (3), map (3), helped (3), between (3), created (3), service (3), episodes (3), trace (3), currently (3), local (3), math (3), evolving (3), asked (3), community (3), 1017 (3), simple (3), taken (3), possibly (3), oplss (3), recognize (3), enter (3), entries (3), last (3), containers (3), maintainer (3), initially (3), firefox (3), necessary (3), alacritty (3), led (3), interlude (3), features (3), jojo (3), care (3), xauthority (3), different (3), rseq (3), programmer (3), applicative (3), digit (3), observable (3), update (3), might (3), lazy (3), indeed (3), question (3), joining (3), cyclic (3), create (3), order (3), cell (3), else (3), future (3), often (3), write (3), nominations (3), 1007 (3), structures (3), post (3), sets (3), icfp (3), believe (3), sep (3), gamari (3), monad (3), quoted (3), str (3), click (3), personal (3), mostly (3), straight (3), opengl (3), directories (3), semantics (3), calls (3), email (3), having (3), consent (3), blogged (3), functions (3), object (3), pull (3), expect (3), publications (3), pearl (3), manually (3), foundation (3), aabaa (3), languages (3), denotational (3), eps (3), knowing (2), finally (2), thought (2), mathlib (2), machine (2), users (2), zulip (2), roughly (2), cells (2), mathematics (2), trinkle (2), excited (2), break (2), zurihac (2), funding (2), updated (2), simons (2), documentation (2), though (2), enough (2), ryan (2), others (2), decide (2), reading (2), hosting (2), dependently (2), suitable (2), add (2), typed (2), day (2), least (2), played (2), productions (2), simply (2), defined (2), above (2), either (2), longer (2), worked (2), content (2), three (2), worth (2), ingredients (2), shepherds (2), coq (2), general (2), impact (2), been (2), affect (2), may (2), hope (2), charge (2), name (2), preference (2), ways (2), assuming (2), processes (2), came (2), module (2), follow (2), usually (2), judge (2), tokens (2), pass (2), took (2), void (2), newtype (2), source (2), purposes (2), explicit (2), labels (2), wasn (2), discussions (2), described (2), amount (2), problem (2), qualified (2), syntax (2), usual (2), per (2), formation (2), achieve (2), identity (2), own (2), tell (2), explore (2), sent (2), guideline (2), selective (2), through (2), bool (2), end (2), eisenberg (2), functor (2), alternative (2), empty (2), cannot (2), result (2), larger (2), hard (2), try (2), famous (2), ulterior (2), hand (2), nomeata (2), began (2), branch (2), demonstration (2), commit (2), interaction (2), makes (2), contribution (2), gundry (2), com (2), adam (2), rules (2), unlike (2), traverse (2), extensions (2), action (2), request (2), pointed (2), prs (2), construct (2), description (2), cinterrupted (2), acyclic (2), became (2), individual (2), avoid (2), places (2), nicely (2), right (2), anymore (2), label (2), continuous (2), parses (2), buggy (2), carefully (2), read (2), throughput (2), act (2), level (2), whenever (2), shape (2), solution (2), meta (2), won (2), vote (2), operation (2), author (2), tmpfs (2), title (2), actual (2), chris (2), analysis (2), motoko (2), implementing (2), please (2), any (2), daemon (2), dri (2), trees (2), head (2), certification (2), together (2), names (2), extract (2), bash (2), learned (2), signature (2), version (2), domain (2), built (2), unix (2), secrets (2), were (2), after (2), steering (2), line (2), partial (2), 2024 (2), command (2), 2804302 (2), signatures (2), pci0000 (2), papers (2), systemd (2), resolve (2), blockchain (2), stub (2), resolv (2), driver (2), devices (2), international (2), perfect (2), fine (2), graphical (2), unfortunately (2), allow (2), cabal (2), portal (2), behind (2), program (2), desktop (2), graph (2), xdg (2), settings (2), installed (2), giving (2), fall (2), summer (2), sebastian (2), sandboxed (2), ago (2), seem (2), proxy (2), lot (2), student (2), programs (2), bubblewrap (2), bibliography (2), enjoy (2), consistent (2), parts (2), moving (2), env (2), common (2), nadia (2), told (2), nonces (2), ecdsa (2), happens (2), against (2), response (2), requests_cache (2), another (2), api (2), requests (2), replace (2), sub (2), public (2), interface (2), internet (2), idioms (2), 2017 (2), setenv (2), somewhat (2), exactly (2), hopefully (2), reason (2), thus (2), dois (2), effectiveness (2), anecdote (2), cost (2), days (2), ingredient (2), next (2), made (2), imagine (2), rough (2), comes (2), strings (2), consensus (2), upper (2), bounty (2), knot (2), agreed (2), push (2), suggested (2), icdevs (2), looked (2), equal (2), sponsors (2), mounted (2), constructors (2), listed (2), went (2), person (2), best (2), copy (2), sounded (2), infamous (2), homepage (2), slides (2), volunteers (2), refine (2), mailing (2), 2016 (2), hash (2), message (2), search (2), firejail (2), experience (2), large (2), happy (2), decision (2), liked (2), recently (2), generous (2), quality (2), coding (2), presence (2), quitting, mere, wanted, chore, safest, claims, volunteered, wrangling, dedicated, bubblewrapping, option, gazing, colleague, naval, feel, bad, decent, didn, nevertheless, noticed, repositories, notice, private, marcin, refinement, tool, application, deserve, isolation, engage, firmly, pushed, statuses, showing, machines, sucharski, quick, network, gui, notifying, approach, nudging, assent, refactoring, automation, global, weaknesses, inflexible, whims, routine, unlikely, actions, certain, rewarding, whole, pleasant, exciting, muster, ended, perform, wrapper, sandboxing, unconstrained, accessible, secretarial, desirable, trod, virtual, commonly, luckily, van, politik, categories, scholten, facundo, dominguez, install, graf, smith, malicious, anything, jasper, gets, extension, ghana, der, jeugt, gabriella, gonzales, released, trust, number, benefit, think, scary, hypothetical, fans, marc, bodigrim, train, favorite, macro, kid, block, provers, tomorrow, archive, supporting, deutsch, tiptoi, editing, transscription, debian, mathe, jezen, lelechenko, thomas, moritz, angermann, reisen, philadelphia, cambridge, john, macfarlane, arnaud, spiwack, indien, special, andrew, those, enjoying, although, meaning, approximately, hour, developers, reassuring, surprising, mind, habits, aren, security, better, never, compromise, many, interview, viable, box, aimed, dependent, types, notation, expressions, unicode, hanging, hassle, fair, foo, blockarguments, chat, weeks, voice, supposedly, model, blurred, nefarious, hosted, transcript, interviews, prefer, apps, lines, finances, reliable, statistics, regularly, everything, managing, 1300, listeners, hobby, dislike, thread, episode, disourse, serious, 2021, four, hosts, producing, regular, authority, ought, enable, receive, glx, grabbing, yes, display, retrospective, retrace, resigned, seven, repository, force, shaping, succeed, influential, procedures, 1000, laws, discussed, picked, timely, decisive, replied, sketch, achievement, archives, trail, judging, misleading, single, paticular, net, hopes, specification, stay, innovating, feature, fact, tired, lousy, projekte, reviewer, chdir, mentally, fill, gaps, spotting, admit, optimistically, surely, caveats, trusted, critically, assessing, var, exec, bwrap, unshare, slate, must, blank, optimizing, everyone, shouldn, hat, easy, top, self, nomination, merged, require, archived, shoved, towards, publicly, picking, overloadedrecordfields, starting, reduce, bandwidth, load, become, february, fixing, bugs, accepting, requiring, permissions, internal, meant, clean, submissions, aforementioned, limited, occasional, effective, smooth, throughout, existence, singleton, dropped, incurred, delays, hardly, surprise, overseeing, him, elusive, dear, heart, responsibilities, original, workflow, rotating, generates, initial, requested, traced, assigning, shoving, dug, complain, reject, recommendation, absence, phases, typing, cared, particularly, especially, overall, gathered, nudge, terminal, principle, ctrl, exit, distributed, tallied, votes, annually, sandbox, latter, status, plate, report, summarize, ones, state, affairs, pick, conveniently, mode, grab, contribute, being, allowed, assign, inconvenience, happened, sneaky, ask, direnv, preserved, happily, writable, corresponding, intentionally, stuff, finished, store, host, ebbed, ping, mound, binds, months, conclusion, minimal, namespace, implicit, filesystem, builds, below, voting, included, metadata, protection, forth, thereon, switching, seemed, ain, cargo, feeling, satisfaction, relied, experimented, exposing, bunch, involves, flatpak, opened, links, expertise, ideally, cookies, gut, link, heed, saying, clicking, evolution, forget, mistake, harder, normal, manage, justice, infrastructure, importantly, changes, cult, assessment, default, effect, determined, during, passwords, exfiltrates, deletes, dependency, compromised, explicitly, guidance, vision, escape, attacker, targeted, foster, innovation, browser, hold, gatekeepers, corners, proven, polishing, prove, dbus, filtering, lasts, urls, pasting, lead, copying, live, expert, refreshing, manager, workshop, 11th, booktitle, stable, pointers, weak, storage, stretching, clack, koopman, pieter, editor, elliott, ifl, lochem, marlow, 14162, 2502326, 2502323, typesafe, 1596653, 1596638, 1_17, 642, netherlands, 978, clairvoyant, 3341718, turns, selected, 1999, september, conal, inproceedings, 2804309, preprint, speaking, choose, latex, direct, ruby, similar, accepted, isit, submitted, introducing, scenes, algorithms, minesweeper, improved, certainly, cite, breitners20, doibib, backend, doi2bib, family, tuning, worry, python3, sqlite, install_cache, dblpbib, stdin, safe_load, items, org, text, print, dblpbibtex, lvars, polakow, anonymous, 3158152, pervasive, takes, 10722298_3, dejafu, 2804306, runst, quickcheck, almost, 351266, 351240, optimiser, 00029, 6423, s0167, identifiers, keeping, sabry, refer, watch, bibliographies, generating, format, assembling, earlier, snippets, whatever, outdated, related, science, coverage, highest, bothered, rest, pieces, 1016, s0956796897002943, 3527326, modular, spygame, 3371101, cocaml, 1473, 3233, s0956796802004331, s0956796817000016, 321938, longley, 317775, 317636, nievergelt, 804906, 800152, runst2, 321921, kam, concurrent, 2951913, 237794, 237721, launchbury, 158618, 158511, datafun, 2951948, 6_7, ullman, 46674, 540, kildall, 512945, 512927, reviewers, claudio, munihac, quickly, she, africacrypt, presented, turned, sleuthing, school, her, oregon, eugene, attended, phd, nine, image, upenn, saw, dylan, video, overly, overlooked, raw, creation, deterministic, accident, rowe, looks, amaclin, pseudonym, under, activist, searched, implemented, postdoc, specify, slide, donated, cover, heard, money, donate, guys, charity, vain, helps, 10k, organizers, attached, sponsorship, donation, posts, view, students, design, merkle, implement, dfinity, becoming, graduating, met, meeting, learning, topics, cause, effort, completed, task, offered, profit, gigs, consulting, sneery, reports, readers, variants, beautiful, sees, internally, productive, definitions, booleans, ready, magically, camera, include, july, welcome, embedded, fragment, unifies, pretty, laziness, bothers, pedestrian, friendly, constructive, brings, ability, inherent, abstract, approaches, resort, solve, hole, black, dreaded, elegant, input, declaratively, problems, lack, questions, phildalephia, week, airbnb, karlsruhe, club, chaos, yearly, gulaschprogrammiernacht, heninger, give, sneer, fan, unsafe, overlap, buffer, bytes, odd, room, lattice, captured, calculus, probem, crux, cycles, terminates, evaluates, recursively, evaluation, lambda, attacks, untyped, nicest, tying, discource, notes, progress, ethereum, talks, bobkonf, slowly, squashing, mobile, hence, web, laberous, surprisingly, play, juggle, maintainers, anyways, roundtrip, unnecessary, adds, button, press, expected, rebase, body, playing, continue, received, integration, bot, inspired, engine, speed, interactive, contributions, approved, contributed, obviously, url, hoogle, opposed, parsec, attoparsec, megaparsec, popular, generate, external, directly, prototype, compose, provide, sequences, recognizes, doesn, recurse, lucky, bluff, showed, paste, beholds, annoying, seattle, domains, conjectured, describe, declarative, high, lightning, emphasis, tricks, focuses, gave, symposium, along, goes, maintaining, loogle, goals, alfred, donors, provided, commercial, success, measure, runway, merkin, overhead, team, organizational, alley, technically, isabelle, proving, sloan, greater, decade, proof, creatively, coherent, formalize, mathematicians, lively, exists, assistant, prover, commercially, organization, focused, situation, comfortable, grants, forms, fit, interest, mix, tasks, building, documented, maintained, readable, lots, artifact, amazing, sign, optimism, hedge, hesitate, colleagues, friends, telling, broadly, tackle, checked, changing, chance, whether, ecosystem, plenty, old, furthermore, welcoming, improve, hang, young, education, excites, facilitating, maps, openstreetmap, knowledge, encyclopedic, wikipedia, overview, nicolas, icfp23, further, sic, dynamically, terminals, annotated, tree, according, descriptions, defining, fst, fromlist, asum, concat, bnfex, inter, interact, sure, lexeme, terms, pity, isalphanum, isascii, lists, sillily, tricky, wrong, shared, whitespace, values, requires, passed, seeing, expanding, keep, recurses, ensure, important, unlines, analyze, feed, namely, specific, drop, figure, structure, plausible, observably, slow, exploring, casts, screen, laid, evolved, presentation, behavior, depend, tick, equational, conventional, noting, thoughts, closing, experiments, seen, properties, lie, results, justify, returned, holds, assumption, investigate, properly, possible, deriving, refactor, wrap, excerpt, reference, ord, lifting, insert, relieves, agenda, memoising, typeable, class, proprioception, aided, naming, following, air, matter, simplified, dirty, oleg, advise, known, variations, callaghan, hafiz, frost, kiselyov, course, expects, provides, memoisedcps, utils, gll, discusses, jaro, style, thin, hands, grammars, objects, tie, screencasts, series, visually, across, distinguish, cont, passes, constructor, smart, place, rparser, describing, newunique, hashunique, briefly, precisely, gives, thunks, apart, thunk, records, lets, finite, allocated, infinite, photos,


Text of the page (random words):
ce an excerpt of the the api of parser data parser k tok a k is type of keys tok type of tokens e g char instance functor parser k tok instance applicative parser k tok instance alternative parser k tok instance monad parser k tok parse parser k tok a tok maybe a sat tok bool parser k tok tok tok eq tok tok parser k tok tok memoise ord k k parser k tok a parser k tok a left recursion through sharing to follow the agenda set out in my talk i now want to wrap that parser in a way that relieves me from having to insert the calls to memoise to start i import that parser qualified define a newtype around it and start lifting some of the functions import qualified parser as p newtype parser tok a mkp unp p parser unique tok a parse parser tok a tok maybe a parses mkp p p parse p sat typeable tok tok bool parser tok tok sat p mkp p sat p tok eq tok tok parser tok tok tok t mkp p tok t so far nothing interesting had to happen because so far i cannot build recursive parsers the first interesting combinator that allows me to do that is from the applicative class so i should use memoise there the question is where does the unique key come from proprioception as with the rec def library pure code won t do and i have to get my hands dirty i really want a fresh unique label out of thin air to that end i define the following combinator with naming aided by richard eisenberg propriocept unique a a propriocept f unsafeperformio f newunique a thunk defined with propriocept will know about it s own identity and will be able to tell itself apart from other such thunks this gives us a form of observable sharing precisely what we need but before we return to our parser combinators let us briefly explore this combinator using propriocept i can define an operation cons int int that records the hash of this unique in the list ghci let cons xs propriocept x hashunique x xs ghci t cons cons int int this lets us see the identity of a list cell that is of the concrete object in memory naturally if we construct a finite list each list cell is different ghci cons cons cons 1 2 3 and if we do that again we see that fresh list cells are allocated ghci cons cons cons 4 5 6 we can create an infinite list if we do it without sharing every cell is separate ghci take 20 acyclic 0 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 but if we tie the knot using sharing all the cells in the list are actually the same ghci let cyclic cons cyclic ghci take 20 cyclic 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 27 we can achieve the same using fix from data function ghci import data function ghci take 20 fix cons 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 i explore these heap structures more visually in a series of screencasts so with propriocept we can distinguish different heap objects and also recognize when we come across the same heap object again left recursion through sharing cont with that we return to our parser we define a smart constructor for the new parser that passes the unique from propriocept to the underlying parser s memoise function withmemo p parser unique tok a parser tok a withmemo p propriocept u mkp p memoise u p if we now use this in the definition of all possibly recursive parsers then the necessary calls to memoise will be in place instance functor parser tok where fmap f p withmemo fmap f unp p instance applicative parser tok where pure x mkp pure x p1 p2 withmemo unp p1 unp p2 instance alternative parser tok where empty mkp empty p1 p2 withmemo unp p1 unp p2 instance monad parser tok where return pure p1 f withmemo unp p1 unp f and indeed it works see rparser hs for the full code ghci let aaa aaa tok a pure ghci parse aaa aaaa just ghci parse aaa aabaa nothing a larger example let us try this on a larger example and parse simple bnf grammars here is a data type describing them type ident string type rulerhs seq type seq atom data atom lit string nonterm ident deriving show type rule ident rulerhs type bnf rule for the concrete syntax i d like to be able to parse something like numexp string numexp unlines term sum pdigit 1 2 3 4 5 6 7 8 9 digit 0 pdigit pnum pdigit pnum digit num 0 pnum prod atom atom prod sum prod prod sum atom num term so here is a possible parser mostly straight forward use of parser combinator type p parser char snoc a a a snoc xs x xs x l p a p a l p p l p sat isspace quote p char quote tok quoted p a p a quoted p quote p quote str p string str some sat not ident p ident ident some sat c isalphanum c isascii c atom p atom atom lit l quoted str nonterm l ident eps p eps void l tok ε sep p sep void some sat isspace sq p seq sq eps snoc sq sep atom pure atom rulerhs p rulerhs rulerhs pure sq snoc rulerhs l tok sq rule p rule rule l ident l tok tok rulerhs l tok bnf p bnf bnf pure rule snoc bnf rule i somewhat sillily used snoc rather than to build my lists just so that i can show off all the left recursion in this grammar sharing is tricky let s try it ghci parse bnf numexp cinterrupted what a pity it does not work what went wrong the underlying library can handle left recursion if it can recognize it by seeing a memoise label passed again this works fine in all the places where we re use a parser definition e g in bnf but it really requires that values are shared if we look carefully at our definition of l which parses a lexeme i e something possibly followed by whitespace then it recurses via a fresh function call and the program will keep expanding the definition just like the acyclic above l p a p a l p p l p sat isspace the fix sic is to make sure that the recursive call is using the parser we are currently defining which we can easily do with a local definition l p a p a l p p where p p p sat isspace with this little fix the parser can parse the example grammar ghci parse bnf numexp just term nonterm sum pdigit lit 1 going meta the main demonstration is over but since we now have already have a parser for grammar descriptions at hand let s go a bit further and dynamically construct a parser from such a description the parser should only accept strings according to that grammar and return a parse tree annotated with the non terminals used interp bnf p string interp bnf parsers m start where start ident start fst head bnf parsers m map ident p string parsers m fromlist i parserule i rhs i rhs bnf parserule ident rulerhs p string parserule ident rhs trace asum map parseseq rhs where trace s ident s parseseq seq p string parseseq fmap concat traverse parseatom parseatom atom p string parseatom lit s traverse tok s parseatom nonterm i parsers m i let s see it in action full code in bnfex hs ghci just bnfp parse bnf numexp ghci t bnfp bnfp bnf ghci parse inter interact interp ghci parse interp bnfp 12 3 4 just term sum prod atom num pnum pnum pdigit 1 digit pdigit 2 sum prod atom num pnum pdigit 3 prod atom num pnum pdigit 4 ghci parse interp bnfp 12 3 4 nothing it is worth noting that the numexp grammar is also left recursive so implementing interp with a conventional parser combinator library would not have worked but thanks to our propriocept tick it does again the sharing is important in the code above it is the map parsers that is defined in terms of itself and will ensure that the left recursive productions will work closing thoughts i am using unsafeperformio so i need to justify its use clearly propriocept is not a pure function and it s type is a lie in general using it will break the nice equational properties of haskell as we have seen in our experiments with cons in the case of our parser library however we use it in specific ways namely to feed a fresh name to memoise assuming the underlying parser library s behavior does not observably depend on where and with which key memoise is used this results in a properly pure interface and all is well again nb i did not investigate if this assumption actually holds for the parser library used here or if it may for example affect the order of parse trees returned i also expect that this implementation which will memoise every parser involved will be rather slow it seems plausible to analyze the graph structure and figure out which memoise calls are actually needed to break left recursion at least if we drop the monad instance or always memoise if you liked this post you might enjoy reading the paper about rec def watch one of my talks about it munihac bobkonf icfp23 the presentation evolved over time or if you just want to see more about how things are laid out on haskell s heap go to my screen casts exploring the haskell heap no comments yet go up generating bibtex bibliographies from dois via dblp published 2023 07 12 in sections english digital world i sometimes write papers and part of paper writing is assembling the bibliography in my case this is done using bibtex so when i need to add another citation i have to find suitable data in bibtex format often i copy snippets from bib files from earlier paper or i search for the paper on dblp which in my experience has highest quality bibtex entries and best coverage of computer science related publications copy it to my bib file and change the key to whatever i want to refer the paper by but in the days of pervasive use of dois digital object identifiers for almost all publications manually keeping the data in bibtex files seems outdated instead i d rather just put the two pieces of data i care about the key that i want to use for citation and the doi the rest i do not want to be bothered with so i wrote a small script that takes a yaml file like entries unsafeperformio 10 1007 10722298_3 dejafu 10 1145 2804302 2804306 runst 10 1145 3158152 quickcheck 10 1145 351240 351266 optimiser 10 1016 s0167 6423 97 00029 4 sabry 10 1017 s0956796897002943 concurrent 10 1145 237721 237794 launchbury 10 1145 158511 158618 datafun 10 1145 2951913 2951948 observable sharing 10 1007 3 540 46674 6_7 kildall 73 10 1145 512927 512945 kam ullman 76 10 1145 321921 321938 spygame 10 1145 3371101 cocaml 10 3233 fi 2017 1473 secrets 10 1017 s0956796802004331 modular 10 1017 s0956796817000016 longley 10 1145 317636 317775 nievergelt 10 1145 800152 804906 runst2 10 1145 3527326 polakow 10 1145 2804302 2804309 lvars 10 1145 2502323 2502326 typesafe sharing 10 1145 1596638 1596653 pure functional 10 1007 978 3 642 14162 1_17 clairvoyant 10 1145 3341718 subs replace peyton jones with peyton jones and turns it into a nice bibtex file doi2bib py doibib yaml dblp bib head dblp bib inproceedings unsafeperformio author simon l peyton jones and simon marlow and conal elliott editor pieter w m koopman and chris clack title stretching the storage manager weak pointers and stable names in haskell booktitle implementation of functional languages 11th international workshop ifl 99 lochem the netherlands september 7 10 1999 selected papers the last bit allows me to do some fine tuning of the file because unfortunately not even dblp bibtex files are perfect for example in the presence of two family names now i have less moving parts to worry about and a more consistent bibliography the script is rather small so i ll just share it here usr bin env python3 import sys import yaml import requests import requests_cache import re requests_cache install_cache backend sqlite data yaml safe_load sys stdin for key doi in data entries items bib requests get f https dblp org doi doi bib text bib re sub dblp key bib for subs in data subs bib re sub subs replace subs with bib print bib there are similar projects out there e g dblpbibtex in c and dblpbib in ruby these allow direct use of cite dblp rec conf isit breitners20 in latex which is also nice but for now i like to choose more speaking citation keys myself no comments yet go up icfp pearl preprint on rec def published 2023 06 22 in sections english haskell i submitted a functional pearl to this year s icfp and it got accepted it is about the idea of using haskell s inherent ability to define recursive equations and use them for more than just functions and lazy data structures i blogged about this before introducing the idea behind the scenes applications to program analysis graph algorithms and minesweeper but hopefully the paper brings out the idea even more clearly the constructive feedback from a few friendly readers claudio sebastian and also the anonymous reviewers certainly improved the paper abstract haskell s laziness allows the programmer to solve some problems naturally and declaratively via recursive equations unfortunately if the input is too recursive these very elegant idioms can fall into the dreaded black hole and the programmer has to resort to more pedestrian approaches it does not have to be that way we built variants of common pure data structures booleans sets where recursive definitions are productive internally the infamous unsafeperformio is at work but the user only sees a beautiful and pure api and their pretty recursive idioms magically work again if you are curious please have a look at the current version of the paper any feedback is welcome even more if it comes before july 11 because then i can include it in the camera ready version there are still some open questions around this work what bothers me maybe most is the lack of a denotational semantics that unifies the partial order underlying the haskell fragment and the partial order underlying the domain of the embedded equations the crux of the probem is maybe best captured by this question imagine an untyped lambda calculus with constructors lazy evaluation and an operation rseq that recursively evaluates constructors but terminates in the presence of cycles so for example rseq let x 1 x in x rseq let x 1 x in x in this language knot tying is observable what is the nicest denotational semantics update i made some progress via a discussion on the haskell discource and started some rough notes on a denotational semantics no comments yet go up the curious case of the half half bitcoin ecdsa nonces published 2023 06 07 in sections english digital world this is the week of the gulaschprogrammiernacht a yearly chaos computer club even in karlsruhe so it was exactly a year ago that i sat in my airbnb room and went over the slides for my talk lattice attacks on ethereum bitcoin and https that i would give there it reports on research done with nadia heninger while i was in phildalephia and i really liked giving that talk at some point we look at some rather odd signatures we found on the bitcoin blockchain and part of the signature the nonce happens to share some bytes with the secret key a clear case of some buffer overlap in a memory unsafe language which i as a fan of languages like haskell are very happy to sneer at a sneery slide but last year as i was going over the slides i looked at the raw data again for some reason and i found that we overlooked something not only was the the upper half ot the nonce equal to the lower half of the secret key but he lower half of the nonce was also equ...
Thumbnail images (randomly selected): * Images may be subject to copyright.YELLOW status (not for everyone)website (probably) only for adults
  • A sneery slide
  • The OPLSS’14 full image

Verified site has: 41 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-20 21-25 26-30 31-35 36-40 41-41


The site also has references to the 1 subdomain(s)

  joachim-breitner.de  Verify


Top 50 hastags from of all verified websites.

Recently checked links (by ScreenShot) on WebLinkPedia.

Screenshot of the main domain: dodung.netScreenshot of the main domain: h-top-calella-palace-es.hotelmix.esScreenshot of the main domain: qh88e.comScreenshot of the main domain: weblapkeszites-egyszeruen.hupont.huScreenshot of the main domain: city-circus-athens-hotel.booked.com.ptScreenshot of the main domain: thuctapsinh.tuaf.edu.vnScreenshot of the main domain: auction.co.krScreenshot of the main domain: lapita-dubai-parks-and-resorts-autograph-collection.hotelmix.itScreenshot of the main domain: kyvancuc.wordpress.comScreenshot of the main domain: holiday-inn-sofia.booked.co.ilScreenshot of the main domain: all-travel.comScreenshot of the main domain: store.giantbomb.comScreenshot of the main domain: 9to5.softwareScreenshot of the main domain: rinnovabili.itScreenshot of the main domain: gwenstefani.comScreenshot of the main domain: quoka.deScreenshot of the main domain: rentalmobillampungrafiq.comScreenshot of the main domain: remove.meScreenshot of the main domain: skovgaard-gaarde-3.technetbloggers.deScreenshot of the main domain: bungalow-und-ferienwohnung-auf-rugen-kluis.ibooked.com.brScreenshot of the main domain: lapita-dubai-parks-and-resorts-autograph-collection.ibooked.com.brScreenshot of the main domain: slc.go.thScreenshot of the main domain: bungalow-und-ferienwohnung-auf-rugen-kluis.booked.com.ptScreenshot of the main domain: sujayt.comScreenshot of the main domain: ww11.cn.HentaiTube.winScreenshot of the main domain: ww11.jp.HentaiTube.winScreenshot of the main domain: alyawmaljadid.infoScreenshot of the main domain: walletshop5.bravejournal.netScreenshot of the main domain: ethiopianimporter.comScreenshot of the main domain: am22tech.comScreenshot of the main domain: ww1.kuliahweb.netScreenshot of the main domain: mantra-terrace-hotel-brisbane.nochi.comScreenshot of the main domain: suites-caipira-petropolis-rio-de-janeiro.hotelmix.myScreenshot of the main domain: imc-fatih-apartments-istanbul.nochi.com.uaScreenshot of the main domain: sso.villacollege.edu.mvScreenshot of the main domain: twenty-campus.comScreenshot of the main domain: doctoroz.comScreenshot of the main domain: sexbannuoc.comScreenshot of the main domain: sexgaixinh.lolScreenshot of the main domain: payangrod.com
Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/1.1 301 Moved Permanently
Content-Type text/plain; charset=utf-8
Date Tue, 16 Apr 2024 07:30:58 GMT
Location htt????/joachim-breitner.de/
Server Netlify
X-Nf-Request-Id 01HVJX1V5DDVJSD9Z2KK1GY915
Content-Length 43
Connection close
HTTP/1.1 301 Moved Permanently
Content-Type text/plain; charset=utf-8
Date Tue, 16 Apr 2024 07:30:58 GMT
Location htt????/www.joachim-breitner.de/
Server Netlify
Strict-Transport-Security max-age=31536000
X-Nf-Request-Id 01HVJX1V7FXMFGTZE23T7W2F88
Content-Length 47
Connection close
HTTP/1.1 302 Found
Age 0
Cache-Control public,s-maxage=3600
Cache-Status Netlify Edge ; fwd=stale
Content-Type text/plain;charset=UTF-8
Date Tue, 16 Apr 2024 07:30:58 GMT
Location /blog
Server Netlify
Strict-Transport-Security max-age=31536000
X-Nf-Request-Id 01HVJX1VA4419RY7J0N46ZFDYR
Connection close
Transfer-Encoding chunked
HTTP/1.1 200 OK
Accept-Ranges bytes
Age 0
Cache-Control public,max-age=0,must-revalidate
Cache-Status Netlify Edge ; hit
Cache-Status Netlify Edge ; fwd=stale
Content-Encoding gzip
Content-Length 37297
Content-Type text/html; charset=UTF-8
Date Tue, 16 Apr 2024 07:30:58 GMT
Etag 3d5d7235f7f0d382774b0249624f0783-ssl-df
Server Netlify
Strict-Transport-Security max-age=31536000
Vary Accept-Encoding
X-Nf-Request-Id 01HVJX1VC4H9JXWVDCA642Z79J
Connection close

Meta Tags

title="Blog – Joachim Breitner's Homepage"
http-equiv="Content-Type" content="text/html; charset=UTF-8"
http-equiv="X-UA-Compatible" content="IE=edge"
name="viewport" content="width=device-width, initial-scale=1"

Load Info

page size37297
load time (s)0.341192
redirect count3
speed download109313
server IP52.58.254.253
* all occurrences of the string "http://" have been changed to "htt???/"

SEO From Wikipedia, the free encyclopedia
Search engine optimization (SEO) is the process of affecting the online visibility of a website or a web page in a web search engines unpaid results—often referred to as `natural`, `organic`, or `earned` results. In general, the earlier (or higher ranked on the search results page), and more frequently a website appears in the search results list, the more visitors it will receive from the search engines users; these visitors can then be converted into customers. SEO may target different kinds of search, including image search, video search, academic search, news search, and industry-specific vertical search engines. SEO differs from local search engine optimization in that the latter is focused on optimizing a business online presence so that its web pages will be displayed by search engines when a user enters a local search for its products or services. The former instead is more focused on national or international searches. and ADS Publishers From Wikipedia, the free encyclopedia
Advertising is an audio or visual form of marketing communication that employs an openly sponsored, non-personal message to promote or sell a product, service or idea. Sponsors of advertising are often businesses wishing to promote their products or services. Advertising is differentiated from public relations in that an advertiser pays for and has control over the message. It differs from personal selling in that the message is non-personal, i.e., not directed to a particular individual. Advertising is communicated through various mass media, including traditional media such as newspapers, magazines, television, radio, outdoor advertising or direct mail; and new media such as search results, blogs, social media, websites or text messages. The actual presentation of the message in a medium is referred to as an advertisement or `ad` for short.
Commercial ads often seek to generate increased consumption of their products or services through `branding`, which associates a product name or image with certain qualities in the minds of consumers. On the other hand, ads that intend to elicit an immediate sale are known as direct-response advertising. Non-commercial entities that advertise more than consumer products or services include political parties, interest groups, religious organizations and governmental agencies. Non-profit organizations may use free modes of persuasion, such as a public service announcement. Advertising may also be used to reassure employees or shareholders that a company is viable or successful., wall of links.


If you want to put something else on this wall, write to us.