a thoughtful web.
Good ideas and conversation. No ads, no tracking.   Login or Take a Tour!
comment by user-inactivated
user-inactivated  ·  1868 days ago  ·  link  ·    ·  parent  ·  post: Paul Graham created another Lisp: Bel

Still don't like abbreviations as part of the syntax. Graham likes abbreviating symbols in lisp, but aside from some conventions (call/cc in Scheme) no one else does that, and for good reason.

Why on earth did he rename cons "join" but then keep car and cdr? Oh, because cons is defined later as something that isn't cons. On that note, since threads are part of the language join doesn't mean what one would expect it to mean either.

lit is cute, but I notice a lack of guarantees that serializing a function twice and reading it back will yield two functions that are id to each other.

Either the definition of apply is misleading or it serves no purpose? In CL and Scheme it takes the arguments as a list, but here it looks like it takes them individually, and it's a lisp-1, so it seems like any use of apply could just be a function call.

... I'm stopping now. Kind of like arc, it looks like it was a fun hobby project.





mk  ·  1868 days ago  ·  link  ·  

It is like Jony Ive wrote this:

  (set prims '((id join xar xdr wrb ops)

(car cdr type sym nom rdb cls stat sys)

(coin)))

  (def applyprim (f args s r m)

(aif (some [mem f _] prims)

(if (udrop (cdr it) args)

(sigerr 'overargs s r m)

(with (a (car args)

b (cadr args))

(eif v (case f

id (id a b)

join (join a b)

car (car a)

cdr (cdr a)

type (type a)

xar (xar a b)

xdr (xdr a b)

sym (sym a)

nom (nom a)

wrb (wrb a b)

rdb (rdb a)

ops (ops a b)

cls (cls a)

stat (stat a)

coin (coin)

sys (sys a))

(sigerr v s r m)

(mev s (cons v r) m))))

(sigerr 'unknown-prim s r m)))

I like the brevity in Arc. I don’t know why, but it works for me.