freenode/#lisp - IRC Chatlog
Search
2:41:48
aeth
"slim CL" as in, it looks mostly like a subset of CL, instead of being Scheme-style or radically different and just parenthesized.
2:41:57
random_numbers
The only one I know of that's cross-compiled is ChickenScheme. Then again I only started looking today.
2:42:19
random_numbers
Any other one you'd recommend? (I discount Hy and Clojure. They're interpreted, not compiled.)
2:43:31
aeth
On the surface, it looks very CL-style, although it's disappointing that it doesn't have arrays or structs.
2:44:09
|3b|
from their benchmarks seems to be ~500-1000 times less efficient than sbcl by instruction count
2:44:33
random_numbers
aeth: Bike: Yes. I'm disregarding VMs because those aren't quite practical on small SoCs.
2:44:58
|3b|
hard to say how much of that is from running heavily recursive but otherwise simple benchmarks
2:45:36
random_numbers
Hy is transformed into Python AST and executed the same as native code so it depends on circumstances. Still all runs on Python VM.
2:45:38
Bike
not having arrays is kind of weird. structs would be more difficult since you'd probably want something more like c structs. or at least with typed slots.
2:46:10
random_numbers
Being used to Clojure I'd say that if maps aren't too heavy/slow, they can do pretty well in a pinch.
2:46:47
aeth
Bike: I use typed slots in my structs in CL, and I assume that they do something in SBCL.
2:47:07
random_numbers
Really? Well. That's kind of a significant change that doesn't make that much sense. It's not as though macros are ever executed at run-time.
2:56:19
random_numbers
Mostly that it does interop properly and compiles. I'm not asking for something that generates legible/maintainable code.
3:06:41
vtomole
I can't hack clojure cause the arguments for procedures are represented as vectors instead of lists. (square brackets, uh)
3:21:50
random_numbers
tetero: Yeah, I found it and wondered what people thought of it and if they'd heard of it. Some people dug into it far more than I expected and found it was somewhat lacking.
3:34:51
akkad
Quadresce: actually for mobile LambdaNative uses gambit and is much more performant than chicken.
3:51:03
random_numbers
Having read through some of ECL's docs, I like what they did with the implementation.
4:36:40
aeth
tetero: sorry, my brain's parser must be broken. I didn't parse the "ulisp" within the URL further up and thought that you were the first mention
6:26:10
reinuseslisp
shka: bt is for (logical?) threads, I mean something like unix's sysconf(_SC_NPROCESSORS_ONLN)
6:40:32
jackdaniel
reinuseslisp: bordeaux threads is just a portability layer which maps into threads in common lisp implementation
6:42:27
reinuseslisp
I just didn't find a word to differentiate CPU cores/threads and application (bordeaux-) threads
6:56:51
reinuseslisp
https://stackoverflow.com/questions/150355/programmatically-find-the-number-of-cores-on-a-machine
7:11:46
jackdaniel
there are bindings to openmp for CL, if that's not an overkill, you could use that
7:50:03
schweers
does anyone have an idea why `prin1' or `format' with "~S" would emit a linefeed after printing a symbol? It seems to me that this only happens when printing on a socket stream.
7:54:34
schweers
I could swear that the code in question worked before, I’m really stumped why this happens now
8:01:49
schweers
well, I have to change the readtable-case as I’m interacting with a scheme, but that’s disabled for now
8:03:59
schweers
wait, pp should not be turned on, that’s why I’m using prin1 and/or format with "~S"
8:05:24
schweers
well, I can’t reproduce it outside of my program, which I find quite disconcerting. Oh well, more debugging it is.
8:06:26
schweers
Well, if no one else has an idea, I suspect it really is a problem with some other code I’ve written, i.e. the problem is not me misunderstanding `prin1'
11:04:34
phoe
Is there any function that, given a cons and a value, destructively updates that cons in a way similar to PUSH?
11:05:05
phoe
Like - I can write it myself, it's simple, but is there anything like that out in the wild already?
11:30:36
TMA
phoe: you mean something like (lambda (cons value) (push (cdr cons) (car cons)) (setf (car cons) value)) ?
11:31:41
Bike
the parameter names in the defgeneric are irrelevant except for debugging, so i can imagine it working and an implementation not bothering ot check
11:35:11
TMA
it looks like it might be a problem -- it shall be an generic-function-lambda-list -- which is a lambda-list -- which does not allow for repeated var names
11:40:11
phoe
I just found a bug in my few months' old code - it produced code like (defgeneric foo (t t t)) by mistake where it should have produced (defgeneric foo (bar baz quux)).
12:07:52
jackdaniel
please file a bug, though I don't think it's a high-priority issue (if you put t as parameter name you ask for a fail anyway)
12:17:11
schweers
jackdaniel: just out of curiosity: what exactly is the bug here? that such a defgeneric does not signal an error?
12:18:25
phoe
a) because T is not a valid variable name as it's a constant, b) because there are duplicate parameter names
12:19:20
phoe
jackdaniel: it's a petty issue, but as I said, it's possible to turn these into real-life compilation bugs
12:20:31
schweers
and not like the implementation to silently do the thing I probably meant. Although I think I’d prefer a warning over an error.
13:40:08
|3b|
is it actually forbidden to define a function with T as a parameter? T is a valid variable name (it has to be since it names a constant variable), you just aren't allowed to bind it (since it is a constant and in CL package), but binding doesn't happen until you call the function
13:40:41
|3b|
ACTION isn't arguing that anything that complains should stop complaining (even at full warning level), just curious if i missed something in the spec
13:40:44
schweers
I guess the reason it is illegal is that it is forbidden to redefine names defined in the standard
13:41:06
|3b|
it is forbidden to /bind/ them (and a bunch of other things unrelated to function parameters)
13:41:46
specbot
The COMMON-LISP Package: http://www.lispworks.com/reference/HyperSpec/Body/11_aba.htm
13:42:25
specbot
Constraints on the COMMON-LISP Package for Conforming Programs: http://www.lispworks.com/reference/HyperSpec/Body/11_abab.htm
13:43:18
Bike
defgeneric doesn't actually establish bindings, and i think it would be reasonable, if very slightly inconvenient, for an implementation to accept (t t t) as a gf lambda list