libera/#lisp - IRC Chatlog
Search
7:30:41
rendar
does exist a VM for a lisp dialect? I guess that VM, if any, will contain just a very few instructions, or.. basically just 1: execute s-expr.. because all lisp is based on that, right?
7:34:10
wasamasa
for example JVM/CLR languages have the option of compiling to the respective byte-code
7:36:43
wasamasa
I mean, it was written by someone who wrote CL for a living, but got more and more distant over time
7:41:11
wasamasa
there are conventions to not mutate data if not needed, but no mechanisms forbidding you from doing that
8:19:03
prokhor__
white_Flame: I was thinking about you recently... : http://www.lispworks.com/documentation/lw80/lw/lw-java-ug.htm wouldnt that speed up wour work on clyc by several magnitudes by "incrementally substituting" the codebase?
8:50:59
mintsoup
Hey everyone, I'm trying to use SBCL to dynamically generate/emit machine code and then run it. I have read this article https://pvk.ca/Blog/2014/03/15/sbcl-the-ultimate-assembly-code-breadboard/ and I have a vague idea of what the process is going to be like (allocate a memory, emit machine code to it (using the inst macro?), and then call it), but I couldn't find any simple hello-world examples to build upon. Does anyone here have any
8:53:15
pjb
rendar: the point is that the mutability status of an object depends on the phase in its life cycle.
8:54:05
pjb
rendar: it's often more efficient, and gives clearer code, better algorithms, to use mutation, when the object is being created. And then to consider it (or have it) be immutable when it's used.
8:54:24
wasamasa
mintsoup: I'm pretty sure the internals changed enough for the blog post to no longer work
8:54:50
pjb
rendar: in Objective-C class libraries, we often have an immutable class, and a mutable subclass. So you may create mutable instances, and then return them as immutable (since it's a superclass), so clients cannot mutate it anymore.
8:56:46
pjb
rendar: but immutability is also contradictory with Object Oriented Programming. Since an object is the encapsulation of state and methods (to mutate the state), and since the purpose of OO is to modelize the real world, where mutation is everywhere (even in particules, you can mutate their state, adding/removing energy, flipping spins, etc), using immutable objects is unnatural. You have to make copies all the time!
8:57:21
mintsoup
wasamasa I have but I have zero experience with SBCL internals so I couldn't figure anything out. Where can I learn more?
8:58:27
pjb
mintsoup: why do you want to generate assembly level code? Can't you just generate lisp code, and have the implementation compile it for you?
8:59:34
mintsoup
wasamasa will cmucl docs be of any use? The sbcl documentation references it quite a lot
11:31:04
jcowan
https://docs.scheme.org/surveys/compiler-available/ is a page about how various Schemes do things (straight interpreter, bytecode interpreter, compiler to C, native compiler, etc.)