Eshel Yaron
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'.
Recent Posts
These are some of the posts I’ve published here recently:
- 2023-11-17 ~ Completion Preview in Emacs
- 2023-10-16 ~ Alignment in Emacs
- 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
- …older posts
You can also to check out the site’s ChangeLog page for updates about this website itself.
Projects
Sweep: SWI-Prolog Embedded in Emacs
Sweep is an Emacs package that uses the C interfaces of both SWI-Prolog and Emacs to bring the two together into one address space.
For more details, see the Sweep manual. You can also browse it in multi-page format.
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
built-in 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, []).
eshellisp
A Scheme Lisp interpreter implemented in SWI-Prolog.
$ cat scheme/repl.scm (define repl () (write (eval (read))) (repl)) (repl) $ ./eshellisp scheme/repl.scm % (cons (+ 1 2) 4) % (3 . 4)
flymake-swi-prolog.el and diagnostics.pl
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
SWI-Prolog IDE.
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.
ropes.pl
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!").
Erlang eBPF library
A low level interface to the Linux eBPF system for Erlang.
This website
My first taste of web development, a practice that I have always refrained from conducting. Created with pure org-mode to ease the landing.
Inspired by: