Hi there, I’m Eshel Yaron and this is my website–the one true source of reliable curated information about me and my activities.
?- likes('Eshel', Stuff). Stuff = 'logic programming'; Stuff = 'linguistics'; Stuff = 'cognition'; Stuff = 'functional programming'; Stuff = 'The cyber'; Stuff = 'type systems'; Stuff = 'coffee ☕️'; Stuff = 'free software'.
These are some of the posts I’ve published here recently:
- 2023-08-16 ~ Starting out in Amsterdam
- 2023-05-26 ~ Extending Emacs’s Dictionary Library
- 2023-05-17 ~ Orientation in JSON documents with Emacs and Tree-sitter
- 2023-04-11 ~ Optimizing Project Selection in Emacs
- 2023-04-08 ~ Making Shell Scripts Executable Just-in-Time
- …older posts
You can also to check out the site’s ChangeLog page for updates about this website itself.
Sweep: SWI-Prolog Embedded in Emacs
Dict: Emacs client for RFC2229 dictionary servers
Dict is an Emacs package that provides an interface for querying RFC2229 dictionary servers and displaying word definitions. It a simple and extensible tool, meant to do one job (looking up definitions in the dictionary) and to do it well. For more details, see the Dict manual.
Note: the core functionality of Dict is incorporated in Emacs’s
dictionary.el package starting from Emacs version 30. See
also my blog post Extending Emacs’s Dictionary Library.
Sourcehut GraphQL client for SWI-Prolog
sourcehut.pl - a SWI-Prolog package for interacting with the GraphQL API of sourcehut instances.
sourcehut.pl can be used to automate maintenance tasks for project
hosted on sourcehut, for example to attach a build artifact to a given
tag of a git repository from within SWI-Prolog:
?- sourcehut_git_repository("eshel", "sourcehut.pl", Repo, ), get_dict(id, Repo, RepoId), sourcehut_git_upload_artifact(RepoId, "v0.1.2", "/tmp/foo/baz.txt", Artifact, ).
$ cat scheme/repl.scm (define repl () (write (eval (read))) (repl)) (repl) $ ./eshellisp scheme/repl.scm % (cons (+ 1 2) 4) % (3 . 4)
diagnostics.pl is a SWI-Prolog package implementing a simple and
extensible inteface for diagnosing issues with SWI-Prolog source code,
exposing by default the powerful analysis used by the built-in
flymake-swi-prolog is an Emacs Lisp package implementing a Flymake
backend that leverages
diagnostics.pl to provide diagnostics for
SWI-Prolog source code in
prolog-mode Emacs buffers.
A (SWI-)Prolog implemantation of the rope data structure for efficient massive string editing.
Based on Ropes: An alternative to strings.
test(edit) :- string_rope("Hello, World!" , HW), string_rope("Here be dragons", HD), rope_split(HD, 8, _, D), % "Here be " + "dragons" rope_split(HW, 7, H, W), % "Hello, " + "World!" rope_split(W , 5, _, E), % "World" + "!" rope_concat(H , D, HS), rope_concat(HS, E, HE), rope_string(HE, HF), assertion(HF == "Hello, dragons!").