1. Pedagogically, the lispy syntax was a big stumbling block for beginners. Probabilistic programming is hard enough as it is; prefix notation and parens only added difficulties (and these difficulties were unrelated to the conceptual material).
2. webchurch compiled to Javascript anyway, so it was nice to be closer to the target language.
3. Lisp can be a bit awkward for certain contemporary programming idioms (e.g., accessing object properties).
$ cat animal.tl
(defstruct animal nil
(:static legs nil)
(:method speak (self something)
(pprinl something)))
(defstruct dog animal
(:static legs 4)
(:method speak (self something)
(call-super-method self 'speak something)
(pprinl "Woof!")))
$ txr -i animal.tl
1> (defvar d1 (new dog))
d1
2> (defvar d2 (new dog))
d2
3> d1.legs
4
4> (set d2.legs 5) ;; legs is static: i.e. class-wide
5
5> d1.legs ;; all dogs have 5 legs now
5
6> d1.(speak "hey!")
hey!
Woof!
"Woof!"
7>
Next:
7> 'a.b.c.d
a.b.c.d
8> (car 'a.b.c.d)
qref
9> (cdr 'a.b.c.d)
(a b c d)
10> '(qref a b c d) ;; qref ::= "qualified reference"
a.b.c.d
11> '(qref a b (c x y) d)
a.b.(c x y).d
12> '(qref (qref a b) c)
(qref a.b c)
qref is syntax, targetted by a macro definition:
13> (macroexpand '(qref a b c))
(slot (slot a 'b)
'c)
The TXR Lisp scripting language removes most of the Lisp micro-stumbling-blocks in everyday coding, providing the above notation, plus array access with ranges, and nice "string quasiliteral" notation for interpolated strings.
Very interesting and well presented. If it were me I would try to provide a few concrete examples, ideally with figures, in the introduction but I'm a visual person.
Church was the original probabilistic programming language used for the book, and as per another comment in this thread and a draft PhD dissertation[1], WebPPL is the successor to Church.
"Niche" is probably in the eyes of the beholder if the audience is deliberately diving into probabilistic programming languages and probabilistic cognitive models.
Some of my favourite videos:
- Neural Representations of Language Meaning - Tom Mitchell https://www.youtube.com/watch?v=pRBf8BWAG3k
- Computational cognitive science - Josh Tenenbaum (co-author of probmods) https://www.youtube.com/watch?v=2WQO9e5Mdj4