libera/#lisp - IRC Chatlog
Search
9:55:49
aeth
CL has some poorly named things and some things with inconsistent orders (e.g. NTH vs ELT) because it can't break compatibility.
9:57:40
aeth
SBCL is the main compiled CL implementation (CCL the next most popular); Chez is probably the "main" compiled Scheme implementation but is far from the most popular; Racket has the most focus on FP and is mostly Scheme
9:58:26
aeth
CL probably has the most libraries, but you have to use one if you want a bunch of FP data structures
9:58:51
port19
I assume the performance differnece is small enough that it won't matter in a program that does network requests
9:59:38
mariari
copying objects haven't been too noticable in applications I write. It seems yours is network bound so that would be bigger
9:59:54
mariari
when thinking about functional things, you have to consider the allocation of a new object, but this is true in ocaml, haskell, clojure etc
10:01:09
mariari
yes, I mention them solely to show you what functional compilers do, which isn't magic
10:01:13
port19
I might want to read up on CLOS. Can you, or someone else, recommend a good article providing a high level overview?
10:01:44
mariari
I don't have anything off hand sorry, I use some MOP to make it work nicely functionally
10:03:18
aeth
in particular https://gigamonkeys.com/book/object-reorientation-generic-functions.html and https://gigamonkeys.com/book/object-reorientation-classes.html
10:05:03
aeth
In practice, CL mutates a lot less than you would think for a language that isn't strictly FP because of the expression-based syntax... a lot of things that would normally set don't need to when everything returns a value, even e.g. COND (if/then/else)
10:16:01
pranavats
port19: About CLOS, Daniel Bobrow has an excellent lecture on it. From 1987: https://www.youtube.com/watch?v=IrmHp1rRQ68
12:07:35
port19
Oh right, one thing I forgot to ask earlier in the racket vs common lisp for me as a clojure dev seeking native binaries: startup time is about equal? My main bottlenecks are network requests and always will be, but when that isn't the case (e.g. you invoke my program with the help flag) I want a near instant response (< 1 display frame / 16ms)
12:08:19
port19
Basically do I assume correctly that both racket and common lisp binaries start fast enough?
14:17:33
mdhughes
Schemes are generally much faster on startup, Chez is the language under Racket and it's fast enough for scripting.
14:47:19
rozenglass
moon-child: maybe a chain nth would be more readable and generic, something like (deep-nth 1 2 3 some-list), or some threading-like thingy like (->> some-list (nth 1) (nth 2) (nth 3)) I guess
14:47:50
rozenglass
not sure if those would have had significant performance impact on the machines of old
18:14:56
skin
Clojure has something like that. `get-in` https://clojuredocs.org/clojure.core/get-in . Trying to think of how to do it in Common Lisp better tho