#TIL about Sweep, which embeds #Prolog in #Emacs
> Sweep uses the C interfaces of both SWI-Prolog and Emacs Lisp to create a dynamically loaded Emacs module that contains the SWI-Prolog runtime. As such, Sweep has parts written in C, in Prolog and in Emacs Lisp.
https://eshelyaron.com/sweep.html#High_002dlevel-Architecture


In this paper, we present domain-specific languages (DSLs) that we devised for their use in the implementation of a finite domain constraint programming system, available as library(clpfd) in SWI-Prolog and YAP-Prolog. These DSLs are used in propagator selection and constraint reification. In these areas, they lead to concise specifications that are easy to read and reason about. At compilation time, these specifications are translated to Prolog code, reducing interpretative run-time overheads. The devised languages can be used in the implementation of other finite domain constraint solvers as well and may contribute to their correctness, conciseness and efficiency.
Ruby를 넘어 다른 언어의 철학에서 배우는 프로그래밍 패러다임
Smalltalk의 완전한 객체지향 설계와 메시지 패싱 개념을 통해 객체를 데이터 구조가 아닌 행위 중심으로 다루는 법을 익힌다.
I made a simple prolog formatter for fun, maybe it can be useful for you 😊
The imperative style was very much frowned upon in all Lisps until Common #Lisp introduced SETF, which sold the pass. We had RPLACA and RPLACD in much the same way as #Prolog has the cut operator: ugly hacks, shameful to use, to get around the inadequacies of our machines.
I still think it's best to think of Common Lisp as not Lisp at all but more Fortran-with-brackets.
Modern Lisps like #Clojure use immutable data, which makes imperative style impossible.