freenode/lisp - IRC Chatlog
Search
10:47:38
rk[ghost]
i am attempting to add the proper readline binding to cl-readline. seems worth the current effort for understanding of foriegn function interfacing with a standard library. i used quicklisp to pull the library. if i edit the cl-readline.lisp in ~/my/path/to/quicklisp/dist/quicklisp/software/cl-readline/ and use (ql:quickload) will it use my local copy or try to sync with the net and overwrite?
10:49:19
rk[ghost]
i suppose that is the downside of the beauty of CL and why it isn't commonly adopted is there doesn't seem to be standard practice for many things.
10:50:26
rk[ghost]
then do i just (load "~/quicklisp/local-projects/cl-readline/cl-readline.lisp") or does quicklisp have a method like quickload for loading from local vs. git?
10:50:56
pjb
rk[ghost]: once you've put your system in quicklisp/local-projects, you will just use (ql:quickload :cl-readline).
10:52:29
pjb
like when a variable in an inner scope is shadowed by another of the same name in an outer scope.
10:54:20
pjb
like when a variable in an OUTER scope is shadowed by another of the same name in an INNER scope.
11:32:57
rk[ghost]
wahoo! my intuition was correct and i was able to break out a function of gnu readline as expecterd
12:26:47
phoe
rk[ghost]: quicklisp distros are changed once a month AFAIK. you're better off cloning the newest version from github and PRing to it in most cases.
12:28:10
phoe
(defun rl:clear-screen () (uiop:run-command #+windows "cls" #-windows "/usr/bin/clear"))
12:28:47
phoe
rk[ghost]: a quicklisp dist is basically a list of all offered systems along with their version.
12:29:26
phoe
(but I might be very wrong here, this description is based on 50% intuition 50% accidental overhearing)
12:33:02
Xach
quicklisp provides a set of libraries that build together, and they are updated on a server once per month. if you call the update function, it will fetch those updates to your computer. otherwise it never locally updates.
12:33:30
Xach
if you have a system in an asdf directory somewhere, it will always be loaded before a quicklisp-provided system is loaded
12:35:35
rk[ghost]
phoe: ha. however, i like the abstraction layer of having gnu readline, such that it only requires that gnu's readline is on a system and not various other x, y, or z userspace tools
12:50:16
phoe
quote is pretty unique to Lisp because it's only really useful in places where you can directly manipulate code as data.
12:51:18
beach
Murii: It is similar to the rule in natural languages such as English. So air is something you can breathe, but "air" is a one-syllable word. In the first case, air gets "evaluated" to mean the substance. In the second case, because it is quoted, it refers to the word itself.
13:48:26
Xach
i don't really understand it though. http://report.quicklisp.org/2017-06-16/failure-report/mcclim.html
13:54:57
Xach
slyrus: it's a slightly idiosyncratic indexing system, but it has never failed on mcclim before
13:56:43
slyrus
I added a new ASDF .asd file down in Backends/PostScript. I'm wondering if that's what messed things up. So... zapping your fasls and running (ql:register-local-projects) are the two things that come to mind.
14:35:47
pjb
Murii: the important point wrt. quote, is that lisp programs are written using the format defined for lisp DATA.
14:36:34
pjb
Murii: actually, there's a (preliminary) syntax defined for lisp programs. Stuff like: label[subst;λ[[x;y;s];[null[s]->nil;atom[s]⟶[y=s->x;1->s];1->combine[subst[x;y;first[s]];subst[x;y;rest[s]]]]]]
14:37:23
pjb
Murii: in this syntax, there's no need for quote, since data is simply written with parentheses and uppercase, instead of brackets and lowercase: subst[(WATER;WINE;(MIX WATER AND WINE INTO (MIXED WATER AND WINE))];
14:39:28
pjb
Murii: but the thing is that: 1- there's a direct mapping of the lisp syntax to lisp data; 2- we can easily define an eval function that will take lisp data representing a lisp program, and interpret it; 3- a young student was impulsive and implemented this eval function in assembler before the syntax for lisp program was entirely finalized. The rest is history.
14:39:53
pjb
Murii: in this context, quote is used to indicate that its argument must not be interpreted as lisp code.
14:40:21
pjb
subst[(WATER;WINE;(MIX WATER AND WINE INTO (MIXED WATER AND WINE))]; translates to (subst (quote (water wine (mix water and wine into (mixed water and wine)))))
14:42:24
pjb
Murii: notice that this let an important invention (which existed entirely since the origin, but was embryonic) of macros: ie. functions transforming some lisp data into lisp code, embedded in the code, and called at compilation time.
14:44:24
pjb
Timeframe: AIM-8 specifies lisp and eval in Mars 1959; Russel implemented it in assembler 7090 from 1959-1960 (next version 1.5 in 1962); macros were invented in 1964. Until then, people still used the M-expressions (lisp code syntax) in papers; they only use S-expressions (lisp data syntax) on puched cards and listings. But once macros were introduced everybody flew with them and they forgot about M-expressions.
14:46:01
pjb
Murii: http://informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/aim-8/aim-8.html http://informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/m-expression/index.html
18:08:22
random_numbers
phoe: Read up the logs. 2017-06-16T08:05:02Z Touché. Though that's a fair bit lower-level than desirable.
19:52:29
faraco
question, as a beginner to functional programming paradigm, which language do you recommend to learn. Haskell or Lisp (cl, scheme, etc)?
19:53:29
faraco
I have some programmig background in Perl and C, and would love to expand my knowledge area to untouched territory in my career.
19:55:17
knusbaum
Both are good. Haskell is basically purely functional, while in CL you can program however you like. Both have good reading resources for beginners.
19:59:37
faraco
I just want to grasp my head with these functional stuff. I realized when writing code in another language, using functions like the popular map and reduce is really great and it really make the code concise. However, despite of my lack of experience in the usage area, doing Lisp might be a good idea since it seems much more expressive than the language I primarily use.
20:01:21
loke___
faraco: Lisp is multi-paradigm, which menas that you can mix imperative, functional, object-oriented etc. techniques in the same functions.
20:05:24
faraco
I see. Maybe I could read documentation somewhere to see why it is different, and why it is fun to you guys. Last question if you don't mind, if anything, what Lisp is really suited for and great at? I like to use a programming language for its out of the box features and design focus.
20:06:51
loke___
faraco: It's useful for a lot of things. Like I said, it's multi-paradigm, so there are really few things is doesn't do.
20:07:04
knusbaum
It's about as general-purpose as general-purpose can be. Since it has the features to alter and add to its own syntax and semantics, you can basically make it do anything.