freenode/lisp - IRC Chatlog
Search
1:31:17
White_Flame
I think there's a lot of people here who merely endure emacs, because it's the best way to Lisp
1:31:46
whoman
im going to try myself some climacs in a few moments; been digging into the lisp history still for the last couple months on and off. i want to see modern/mobile touch CLIM hmm
1:34:09
whoman
not sure how to say that. but i am imagining another way to work with the alphabet and parens.
1:36:50
trn
I'll make a web interface for automatic accounts once I decide how that won't be abused/abusable.
1:38:08
whoman
i cant be sure myself just yet, going to learn up on multics on the web while i make supper for a little bit as i poke around if that is cool
1:39:12
trn
No problem, the guest account besides not being able to send messages or mail and no persistent aren't otherwise limited
1:42:42
pjb
Of course, first thing I tried and failed was (list (lisp-implementation-type) (lisp-implementation-version)) :-)
1:43:14
trn
I've mainly been trying to play with their PL/I and almost have a working Gopher server for it
1:44:27
trn
Heh, the lcp here comes from the Bull release not MIT - I will surely look to see if there is a later lcp there.
1:45:03
trn
There were a few different source releases of MR12.x with various additions that found their way out over the years.
1:48:03
trn
Yeah. It's essentially going to be a hack since there isn't native TCP on it, so I'm abusing a serial line.
1:50:07
trn
mainly just to return who -a -long and similar status messages and maybe offer an interactive/browsable help interface
1:54:38
trn
I do not know enough about the system yet to know if wdc/video system has any decent frontend like curses or vms SMG$
1:56:17
trn
Like I said before, I'm an old user but a new admin - and I didn't get free access to play with whatever I to in the past either
2:01:02
aeth
My personal opinion on emacs is that I don't like (GNU) emacs... I just don't like the other options even more.
2:01:58
trn
whoman: Oh - I tried to update the "cost" accounting to print a true cost and ended up getting divisions by zero because there isn't enough precision to show low cost charges :)
2:02:08
whoman
the mac-only (clozure?) seemed alright. the rest look like basic windows95 file manager apps
2:04:12
aeth
e.g. CL, Scheme, Clojure, etc., all have SLIME-like environments (I'm counting SLIME as a SLIME-like environment!) but I don't think elisp does!
2:07:11
trn
I never liked any of them tho. I started on DEC so went from EDI to EDT to LSE and then switched from LSE to vim, mainly to have the same editor on VMS, OS/2,
2:07:21
aeth
Whatever replaces Emacs probably will have to have Emacs keys. Too many Lispers built muscle memory that way (unless they use one of several vi-style emacs packages). That will probably be its lasting legacy, even if people eventually move away from it.
2:09:25
trn
Like, I had it setup for my shell and I read mail and IRC'd with it. I've since been cured.
2:09:42
whoman
these days elisp is quite nice. we just got tagged records/structs, threading/concurrency, dynamic modules (.dll/.so), and what else.. oh lexical binding
2:10:21
aeth
I use many features in CL that few if any other Lisps have. That's probably why I use CL in the first place.
2:10:54
whoman
elisp has most of those features also. i assume it wouldnt be as fast or as spec-conforming
2:11:38
aeth
Well, yes, that's the thing, I use the features to be fast. If I just write the same things in elisp, not only will they be slower, they won't even be the fastest way to do the equivalent thing in elisp.
2:11:39
whoman
for most of the code i have been starting out to write (lisp newbie), can be done in both elisp and common... but two things bug me so i havent hard-decided on which one to persue completely
2:12:03
trn
I mainly use sbcl when I'm playing with Lisp, but I'm lurking around the Clasp guys as well and watching their progress.
2:12:48
whoman
i like the idea of clasp and ecl. but also i ran REmacs yesterday and its a lot faster than normal Emacs
2:15:01
whoman
i was on a clojure kick for a while. but havent had a system with enough memory since then.
2:15:13
trn
Well, thats *your* 3 seconds but you likely wasted lots of "system" time listing and editing and serial line banging :)
2:16:21
z3t0
I am parsing some markdown files and am wondering which would be the better way to work with the data
2:16:44
z3t0
A stream will be used to read the data to begin with, but should i just convert it to a string before working with it?
2:17:26
whoman
z3t0, ironically, there is a bunch of nice elisp code that does a lot of markdown stuff. just use some of that =)
2:18:19
aeth
My main language before CL was Python. I love SBCL because my intuition is about 10x slower than what the result is in SBCL. And then add another 1.5x speedup from a CPU upgrade since those days. All while using a language that's arguably higher level than Python.
2:18:44
aeth
Python vs. SBCL is the difference between a slow interpreter and an average compiler, but it's a huge difference.
2:19:57
whoman
i grew up on C and fell in love with objc/openstep/nextstep/smalltalk/gnustep, got lost in opengl and web stuff, had a passionate affair with haskell, and then wanted to find some clojure/clozure/closure to all the adventures
2:20:27
trn
whoman: http://www.alsoftiphone.com/iCAS/ and http://www.reduce-algebra.com/obtaining.php - so - apparently not
2:21:29
aeth
whoman: Here's some micro-benchmarks, which obviously aren't everything, but they do put SBCL in the class of fast languages rather than the slow ones. https://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.html
2:22:13
aeth
And even if they are everything, taking a 5x slowdown over C to use SBCL seems more worth it (especially with today's computers) rather than e.g. a 10x to 300x slowdown.
2:24:20
aeth
Let's assume SBCL is actually, 100% verifiably 4x (not 5x, I was reading the graph wrong) slower than C... that's not that bad. And it also means that there's plenty of room for even a 2x speed improvement in the future.
2:24:36
whoman
not it itself, more the community and all the places it is and roles it plays. like respecting a prostitute or fast food chain i guess.
2:25:08
trn
ACTION starts antipa - anti-python-action. We'll start some small riots and wave "TREAD ON ME. NOW" flags and demand an end to the tyranical and dehumanizing practices of enforced whitespace and syntax.
2:25:23
aeth
Starting with Python isn't the worst, there can be worse, e.g. starting with JavaScript.
2:26:32
whoman
aeth, with how beginning english-users cant write in straight lines? i dont think the whitespace is so good for that =)
2:28:30
trn
aeth: BLISS isn't as bad as it looks at first however. Neither is COBOL for all the whining that has evoked. These people have clearly never been exposed to DIBOL or IBM RPG, for example.
2:29:15
aeth
trn: Well, afaik, a lot of those languages aren't supposed to be general purpose languages. e.g. COBOL is probably best compared to SQL afaik. And you wouldn't write an RPG in RPG.
2:34:09
whoman
i think the only 'whitespace' i can handle is haskell, but there is where i love the WS a lot
2:35:25
whoman
writing blender plugin about ~1000loc, it was easy to do quick edits and random scrap kind of programming, just like web stuff. so i am mostly neutral to actually working with it
2:36:17
whoman
i really liked C/c++/objc a lot, so i dont mind javascript and rust at all. nothing else like that though (D, C#, lua, blah blah..)
2:36:54
whoman
one withstanding issue about rust apparently is compile speed. but community is large with heavy momentum
2:37:23
aeth
(Although maybe not a very major deal breaker. Some people use CCL because they can't tolerate SBCL's compile speed.)
2:37:59
whoman
sbcl compiles really fast for me here, i think its really the compiler prints that slow it down
2:38:17
aeth
whoman: I can't personally stand C++, it's basically the JavaScript of things that need to be extremely fast.
2:38:28
whoman
(like most things.) but there was one thing that took a long time to compile, i forget which package it was
2:38:30
aeth
i.e. Throw every feature together and have terrible decisions for backwards compatibility.
2:39:20
trn
If anyone wants accounts with storage message me and I will attempt to contact MIT people and see if there is a later Maclisp I can get on there.
2:39:41
whoman
aeth, i used to hate it a lot, the same as java, or c# or any other corporate brochure, but these days its got quite some nice features with its templates and other c++17 stuff. too complex for me though, i just like it now where i disliked it previously
2:39:50
aeth
whoman: Every now and then I hit a strange edge case where SBCL takes forever (sometimes figuratively, sometimes literaly) to compile, but no other CL. Almost certainly some bug or strange interpretation of the code. But that can be fixed, like any bug.
2:40:11
aeth
I'm surprised such an SBCL-slowdown bug made it into a library. Most people use and test with SBCL afaik.
2:45:39
aeth
Afaik, CL was absolutely huge... in the 90s. And now it's normal sized, if not a bit underweight, even though it hasn't changed at all. Scheme might soon be larger than CL, depending on what gets passed in r7rs-large.
2:46:05
aeth
If at one point they were equally sized, C++ has gained about 5,000 features since then.
2:47:33
aeth
r5rs was the norm for a while, then r6rs was a larger spec that was seen as not very Scheme-style, so the compromise was to split Scheme into an r5rs-style r7rs-small and a larger language r7rs-large that could be used for more portability
2:48:26
aeth
r7rs-large was, at least at one point, talked of as making Scheme as large or larger than CL, but I'm not sure if that's still the case, or if it was ever the case.
2:48:33
whoman
ohh spec. java is big, also the web specs are huge, if we combine css3/html5/ecmascript+
2:48:59
aeth
CL is not just the HyperSpec, though. There's a large number of de facto standards in CL, too, like the Meta-Object Protocol (MOP).
2:50:42
aeth
Stuff in alexandria and cl-ppcre could reasonably be core parts of other languages, but don't need to be core in CL because the libraries are there.
2:50:49
vtomole
So scheme wants to be portable and the only option is to make it big? hmm sounds like the T programming language.
2:51:36
aeth
The problem with r5rs and r7rs-small Scheme is that almost any program written in portable Scheme is probably not going to be that useful because the standards are too small. e.g. r7rs-small has no hash table.
2:52:42
aeth
Oh, and there are some practically-standard SRFIs (and some became part of r7rs-small after being so popular for r5rses), but it's nothing like CL, where you can just use Quicklisp.
2:53:21
whoman
a lot of CL implementations are similar. but scheme implementations are more different than each other than CL impls. Racket has a lot of stuff.
2:53:28
aeth
Scheme SRFI support is a matrix of more than a dozen implementatoins implementing different ones, out of hundreds.
2:53:53
aeth
There are fewer, larger CL implementations that only have to deal with a few major portability things roughly comparable to what SRFIs are, like CFFI.
2:55:01
aeth
In CL, you just have to worry about "does this support bordeaux-threads? CFFI?" etc. Not anywhere near as big of a deal, and the answer is almost always yes for the major ones like SBCL, CCL, ECL, etc.
2:56:49
aeth
stylewarning: Numbers are probably the main weakness in your list. I don't think there's a real clear portability library there for e.g. handling NaN and +/- inf etc.
2:57:42
aeth
There are probably 3 libraries that partially do numerical portability, but no clear standard like CFFI, bordeaux-threads, closer-mop, etc.
2:58:39
stylewarning
I complain about this every day probably: CFFI needs more to interact with a lot of C
2:59:21
aeth
Just about everything needs more attention in the CL ecosystem, at the library and implementation level, imo.
2:59:53
aeth
At least on Freenode IRC, CL appears to be much more alive than a lot of 1980s languages, e.g. Pascal.
3:00:34
aeth
Even the superficial stuff like := probably prevented countless bugs that people wrote and continue to write in C and languages that use its syntax
3:00:38
whoman
i remember pascal was kinda fun to work with . i think i did that before C, forhigh school
3:02:10
aeth
Oh, CL is one of the few languages that does things the way I like it, btw. = for equality, and something else for assignment.
3:04:16
aeth
CS is probably the most mathematical major subject that isn't math, statistics, or physics.
3:04:55
aeth
Computer people fool themselves into thinking that they're not doing mathematical things because they (usually) use different kinds of math than the physicists do, that's all.
3:05:51
whoman
also architects and other kind of engineers. numbers and ratios and symmetry and patterns are very important.
3:06:17
whoman
ah, ok =) his name came to mind for some reason too. i couldnt remember the association
3:07:29
aeth
whoman: Engineers, at least at my university ime, are students who barely get through the lower level math and physics, not really understanding the material. And then they're the ones who actually do all the practical applications of such material, somehow.
3:07:53
aeth
whoman: The people who really understand the material go on to idk impractical theoretical things. :-p
3:09:45
aeth
Or maybe the good engineers take all the lower level classes at the high school level because they're going to take 5+ years to graduate anyway.
3:11:26
vtomole
Cl is not growing that's for sure. From the logs online, seems like it was still pretty good in 2007
3:18:14
aeth
I'd much rather have long-float be 80-bit extended precision or 128-bit quadruple-float.
3:18:28
aeth
The right, unambiguous solution if the standard could be updated would probably be to add more levels above double-float
3:21:54
aeth
I think it would be better just to add different levels of float to a float list, perhaps with an arbitrary at the top, if the standard is flexible enough to allow that. (I'm not sure.) http://www.lispworks.com/documentation/HyperSpec/Body/t_short_.htm
3:23:38
aeth
16-bit (short-float, but technically too imprecise to pass the hyperspec), 32-bit (single-float), 64-bit (double-float), 80-bit (extended-float), and 128-bit (quadruple-float) are about all one needs to support, and maybe not even the 80-bit one.
3:24:07
aeth
The only ambiguity is whether long-float is extended-float or quadruple-float or arbitrary-float. The rest map cleanly to standards.
3:25:36
aeth
The issue with e.g. making long-float an arbitrary float on SBCL is... what about when SBCL is ported to a platform that supports IEEE quadruple float, where long-float is a natural fit there?
3:26:17
Bike
stylewarning: you'd probably have to include some kind of "upgrading" mechanism, so that a 62 bit float is just a 64 bit float if that's what the machine has
3:27:14
aeth
(In fact, SBCL runs on SPARC and PowerPC already, so it could in theory use a long-float quadruple float there, perhaps.)
3:27:26
Bike
you'd also have either an implementation limit on n or soft arbitrary floats, which are not trivial. (i personally would have to grap taocp or something to implement them)
3:27:55
aeth
stylewarning: one problem with modeling floats on arrays is the literal notation for floats
3:29:43
aeth
Just about everyone who just puts "1.0" and assumes it's a single-float should afaik think twice about that assumption because of (setf *read-default-float-format* 'double-float) unless I'm wrong
3:30:05
aeth
So any new float system past just having a long-float needs a literal notation, or a reason why not to have one
3:32:48
Bike
actually, i'm not sure how arbitrary precision floats would work. clisp has an (ext:extended-float-digits) or something accessor, but that means you have only one kind of extended float at any given time, and you can just... gain and lose precision?
3:34:36
aeth
And if you permit the arbitrary precision floats to use hardware support where there is a match (potentially 80 and/or 128 bits), then what if the hardware supports both 80 and 128 bits?
3:34:37
Bike
and how do you like, get a high precision float? do some arithmetic and specify the precision you want to end up with? or have a different read syntax...
3:35:05
Bike
i thought the idea was there would be some arbitrary number of fixed precision machine floats
3:36:07
aeth
stylewarning: there is no way to say #single-float-array-of-3(1f0 2f0 3f0) but there is a way to say 1f0 2f0 3f0
3:36:23
aeth
Working with arrays is actually very inconvenient unless you write a few macros or functions to handle the common ones.
3:36:42
aeth
It's common to define "vec" or "vec3", for instance. And then you can just say (vec 1f0 2f0 3f0)
3:36:49
Bike
different unsigned byte lengths aren't distinct in the runtime. you have fixnums and you have bignums, and the length of an integer is obvious from its syntactic form.
3:39:22
aeth
I have to do something like this to make working with specialized arrays of known length easy enough to work with: https://gitlab.com/zombie-raptor/zombie-raptor/blob/b5639da6be400c1482545fe7a874bf3bd0b3db08/util/util.lisp#L92-106
3:40:23
aeth
But it's one thing to add conveniences, and another to take away conveniences (or at least not have them for some float types when others have them), i.e. the 1s0 vs. 1f0 vs. 1d0 vs. 1l0
3:40:51
aeth
stylewarning: I think SBCL optimizes things like mod when it knows the integer is very small
3:41:32
stylewarning
Or optimized SSE arithmetic on notionally boxed types like complex double floats
3:43:15
Bike
numbers don't have to maintain an identity so they don't really need to be boxed, but ive lost the connection to floats.
3:49:24
slark
hello, if i pass to the &body body parameter of a macro `(foo).. the body will contains (`(foo)) right .
3:56:36
Zhivago
Well, `(,@body) would get you back something equivalent to (list ''(foo)) which would evaluate to ('(foo)).
8:04:02
Grue`
hunchentoot started eating a single core (25%) of CPU when idling after the latest quicklisp update
8:10:29
beach
stylewarning: I hadn't made the connection before, but now I know who you are. Was it at ILC in Montreal that we last met?
8:10:32
easye
Grue`: After (asdf:test-op :huchentoot) under sbcl-1.3.19/macos-10.12.5 I don't see such CPU utilization, but that doesn't mean it doesn't exist for you.
8:17:28
stylewarning
When you gave me a stern fatherly talking to about avoiding confusion about the term "mathematical programming" :)
8:19:08
Grue`
easye: doesn't hunchentoot stops the web server after the tests? i only get abnormal cpu usage while the server is running
9:00:18
beach
BW^-: A collection of spanning trees. A spanning tree is a subgraph of a connected graph that contains all the vertices, but that is also a tree, i.e., no cycles.
9:10:38
beach
Though, Norvig and Pitman recommend using WHEN only when the value is unimportant. They would have said ,@(if weather-balloon '((cons "weather balloon" t)) '())
9:11:36
beach
ACTION now fully expects a debate about this issue, but tried to prevent it by presenting it as the opinion of authority, rather than his own.
9:12:51
clintm
Hanging out in #lisp, it sometimes feels like everyone's also on another channel having a discussion I don't see. Re. the 'issue'. :)
9:13:34
BW^-
beach: what are algorithms for doing that translation work - from graph to one or more spanning trees ????
9:13:41
Shinmera
Well, as I mentioned the other day, CL attracts a lot of individualists and people that want to do their own thing, so differing opinions about style is practically a given.
9:14:36
BW^-
beach: it may be asking a lot, but, i "can't see it as a picture" yet, would you mind refering me to some slideshow PDF/PPT or video that shows *geometrically* how such a translation would work out?
9:14:37
beach
BW^-: Collect edges as you track them and mark vertices so that they aren't visited twice.
9:15:17
BW^-
beach: if i'm doing an "offline" algorithm as in no changes accepted, just one single pass from scratch, then I guess I see how i can do that. but i need a dynamic algorithm - there will be insertions and deletions.
9:16:45
BW^-
beach: there is one, and i have the paper, but I don't understand the paper =((((((((((((((((
9:16:58
BW^-
beach: maybe someone explained this stuff. what could I search for at booksc.org etc. to find such an algorithm?
9:18:18
beach
BW^-: Understanding papers takes experience. My standard trick is to make sure I understand each word. Whenever I hit a word that doesn't make sense in the context, it is typically a technical term that I don't know about.
9:20:14
BW^-
beach: this is a quite complex paper. also i ""hate"" mathemathical language, i understand geometrical examples and proofs much better :))
9:44:38
phoe_
Well, it's true, but I read up on the logs and don't fully understand the context of mentioning me.
9:48:27
jackdaniel
stylewarning looks for a full-grown CL programmer who wouldn't require mentoring and will be able to solve some tasks with FOSS software (for money)
10:03:36
clintm
I probably shouldn't think about finding a cl job until I'm not asking about , vs. ,@ and ,@(x (( :P
10:05:01
clintm
I pasted a question earlier about writing a macro interface to something else. I think I closed the tab.
10:05:58
jackdaniel
I just gave you a context, beach suggested you are at least partially grown according to log
10:14:04
phoe_
geez, us at #lisp really have a habit of turning every discussion about foo into either a meta discussion about foo or a discussion about meta foo
10:17:40
phoe_
where you don't have explicit syntax, you have public AbstractLanguageSyntax<JavaSyntax> syntax = AbstractSyntaxBuilder.build(Syntax.JAVA, Syntax.EXPLICIT);
10:32:08
pjb
stylewarning: I'm available as a free-lance CL programmer. Contact me at pjb@informatimago.com for more info.
10:41:37
beach
phoe_: I am not doing the hiring for stylewarning, so I don't know the criteria. It just sounded to me that what he is faced with at the moment is to "grow" Common Lisp programmers from scratch. You are definitely more advanced that that.
10:41:39
beach
If you would be interested in something like that, if I were you, I would not hesitate applying. The company stylewarning works for would figure out whether you qualify. There is no shame in trying, as long as you are being honest about your qualifications.
10:43:28
beach
pjb: It might also be an investment. Ultimately, there would be more people available.
10:44:15
pjb
Depends on the company. If it's established and can make the investment, certainly. Startups have shorter-term concerns and often cannot.
10:44:55
beach
Right then, I was thinking more of the reason I often put in the time to help out newbies.
11:27:59
pjb
You need to find two lispers of different sexes first... Otherwise you only have 50% of chances of getting a new lisper :-)
12:18:22
phoe_
What is a way of destructively splitting a list into a list of elements that satisfy a predicate and a list of elements that don't?
12:26:12
lieven
(loop for x in '(0 1 2 3 4 5 6 7 8 9) if (oddp x) collect x into odds else collect x into evens finally (return (list odds evens)))
12:29:01
lieven
phoe_: seriously, if you need that kind of semantics, the data structure to use might be a vector
12:30:35
pjb
always: (sort list (lambda (a b) (and (funcall predicate a) (not (funcall predicate b)))))
12:31:12
pjb
(let ((predicate 'oddp)) (sort '(0 1 2 3 4 5 6 7 8 9) (lambda (a b) (and (funcall predicate a) (not (funcall predicate b)))))) #| --> (1 3 5 7 9 0 2 4 6 8) |#
12:33:22
pjb
(let ((list (list 1 2))) (let ((a list) (b (cdr list))) (setf (cdr a) nil) (values a b))) #| --> (1) ; (2) |#
12:34:33
pjb
Otherwise you can always use replace to make a non-destructive operation into a destructive one ;-)
12:35:26
pjb
cffi has a lot of problems. Of the biggests: It transforms structs in structs into pointers. It cannot deal with #pragma pack.
12:35:31
Shinmera
If you want it to not cons and can't afford a scratch space either just bubble sort I guess.
12:40:27
phoe_
pjb: Yes. LOOP is useless here since changing the list we iterate on is undefined behaviour.
13:06:24
phoe_
I'll need to make a Jesus symbol macro of sorts that is going to save me in such situations.
13:18:01
pjb
I've got a CoreMIDI/cffi layer that starts to work (I can send and receive MIDI events): https://framagit.org/patchwork/CoreMIDI (No docstring, cf. Apple's CoreMIDI doc). Have fun.