freenode/#lisp - IRC Chatlog
Search
15:38:56
jmercouris
how to go from string --> symbol? having issues in my macro (which I thought worked)
15:43:21
Zhivago
Lisp symbols are case sensitive. The reader does some insane case folding based on a dynamic variable to make it quasi-insensitive.
15:55:05
Shinmera
Zhivago: very rarely I get bug reports from people that use a readtable case other than :upcase
15:57:19
jackdaniel
maybe my joke was lost in a wire transfer (I find :invert least useful from the possible values)
15:57:36
Shinmera
I wasn't sure whether you were serious or not because there's people that actually do try to use it
15:58:19
jackdaniel
I've nevert encountered :invert used in real code (only :downcase which arguably has aesthetic appeal)
15:59:56
jackdaniel
I have even written a test for all corner cases with readtable-case (when fixing bug in ECL)
16:01:27
jackdaniel
https://gitlab.common-lisp.net/ansi-test/ansi-test/blob/master/reader/readtable-case.lsp#L58 there it is
16:17:28
_death
jackdaniel: actually :invert is deemed useful because you can use lowercase for standard symbols and mixed case is simple
17:49:03
stacksmith
jmercouris: have you considered taking a few days off to learn the basics of Lisp? It's not too hard.
17:52:57
Xach
in symbols | is used as a multiple escape character. anything between two | is taken literally without case folding.
17:55:25
stacksmith
The printer and the reader work together - things are printed in a way that can be read back in.
17:58:20
rme
the printer might decide to use the |...| syntax rather than slashifying the output depending on what it thinks is more aesthetic
17:58:21
jmercouris
and symbol-name which accepts a string makes them equal because it makes a symbol from a string
18:00:46
sjl
make symbol creates a new symbol, with the string you give it as its name. it always creates a new symbol, and never puts it into any package
18:00:57
rme
jmercouris: you probably want something like (defun make-keyword (s) (intern (string-upcase s) :keyword))
18:01:40
sjl
(intern "name" package) first checks to see if there's already a symbol in the package with the given name. If so, it returns it. Otherwise it creates a symbol with that name, puts it in package, and returns it.
18:02:20
sjl
without more context of what you're trying to do we can't know whether you want to upcase it or not
18:04:12
jmercouris
intern'd means to register to some package, and a symbol is still a hazy concept
18:04:15
stacksmith
That is the kind of talk that makes people lose respect... Lisp gives you the opportunity to write correct code, squandering it by not bothering to even know what it means is sad.
18:04:43
jmercouris
stacksmith: I don't think you've ever respected me, so were at the same spot as before
18:05:50
stacksmith
jmercouris: Believe it or not, I am trying to be helpful, as others were for me not long ago. I doubt your code works as you have no clue what the output of your code means.
18:08:30
stacksmith
jmercouris: you really should take a couple of days and read about Lisp. There is hardly any syntax, and you will feel much better and less confused about what things like |..| or <..> or #' mean. And your questions will be about more interesting things!
18:10:20
Xach
thodg: I think the goal was to not break existing large codebases managed by influential stakeholders
18:11:36
pjb
Xach: I don't think this gained us any programmer. But personnaly I prefer hexadecimal to octal, so, base ten is a good compromise.
18:12:49
pjb
In any case, when you look at old listings, you must be careful and check if it's not in octal. You can have surprises.
18:18:23
pjb
thodg: the great value in that, is that it allows CL to run old code! http://informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/wang.html
18:19:03
pjb
thodg: further, just put (setf (readtable-case *readtable*) :preserve) and you get instant NON-upcasing !
18:20:57
pjb
thodg: change all the values of the *print- and *read- variables, and see the flies fall.
18:29:43
jmercouris
stacksmith: we don't all learn the same way, for myself especially, it takes a lot of time for some concepts to make sense on intutitive level despite reading about them
18:29:58
jmercouris
stacksmith: I have to discuss the nuances of them, and this channel really helps
18:31:01
jmercouris
based on my questions, you might conclude that I haven't spent a day learning lisp, but I've spent a lot of time, and things don't come for me incrementally as they may come for others
18:34:29
pjb
thodg: anyways, the point is that lisp is very flexible and adaptative, you can morph it into whatever you want.
18:35:32
pjb
thodg: there are very few things you cannot change. For example, false is the symbol CL:NIL, and nothing else. The syntax for symbols (including qualified symbols), integers and floating points is hardwired in the reader, you cannot change it. But about all the rest, you can change it at will.
18:39:46
random-nick
afaik you can even change the character used for comments since it's just a reader macro
18:42:16
stacksmith
jmercouris: no disrespect intended, seriously. I also know a whole lot about different ways of learning, having some issues myself. There is nothing wrong with going in headfirst, and there is nothing wrong with ignorance - as in not knowing. It is kind however to not flaunt it and at least make it look like you made an effort to learn the basics that are easily available :) Take it from one who's asked many a stupid questions h
18:43:46
stacksmith
dlowe: what, you don't like messing with #| or || and all the related Emacs fireworks?
18:46:20
stacksmith
I mean something that edits Lisp, not a text editor that searches around the text for matching parens.
18:46:22
whoman
virtually, got to use your imagination, its not clearly obvious on-screen of the visual actions
18:46:33
jmercouris
stacksmith: I didn't get this far completely ignorant of the basics https://github.com/next-browser/next
18:47:25
stacksmith
jmercouris: I could, but will not, show you some code from a few years ago that "works" too. Now that I know better, it doesn't.
18:47:26
whoman
a lisp browser would be nice and helpful. on the form-level but not the class-level as in smalltalk
18:48:19
jmercouris
You've also been programming lisp for 4 years at least, I've been doing it for about 7 months
18:48:27
stacksmith
whoman: something that is aware of structure and associated semantics - as expressed by lambda-lists of operator-position symbols.
18:50:26
stacksmith
An editor should know that when I enter (with-open-file - the next thing _must_ be a list. By looking at the lambda-list of with-open-file.
18:51:47
stacksmith
Emacs just lets you type nonsense. There are very few valid forms in the infinity of invalid ones. Lambda-lists contained in the image describe valid forms.
18:52:35
jackdaniel
jmercouris: I believe you could use some hints from PCL (book is not long and well written)
18:52:39
minion
jmercouris: please see pcl: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
18:52:55
random-nick
stacksmith: how will you know if a macro evaluates or doesn't evaluate a form you pass?
18:53:36
stacksmith
_death: something has the determining lambda-list, which may be a macro subform, or a parameter, in which chase with-open-file is looked at.
18:54:54
jmercouris
jackdaniel: I've not only read it, I took notes on every chapter :D unfortunately it's not stuck in my head
18:55:34
jmercouris
maybe I'll give it a re-read now that I've been programming lisp for the past 6 months
18:55:51
_death
stacksmith: lisp syntax is malleable.. an editor cannot be smart enough to know everything
18:56:03
jmercouris
jackdaniel: here's a small subset of my notes: https://gist.github.com/79c168a6d618a1ac14d78957e4b47e4c
18:56:35
stacksmith
_death: agreed. But it does not have to be entirely ignorant of forms. I've actually given it a lot of thought.
18:57:52
jmercouris
jackdaniel: are we done for today? I don't need another "you're a dishonest liar", this I can do without, especially since I've given you no reason to think this way
19:00:20
jackdaniel
jmercouris: right now you are rude to me. you have infered some things I didn't tell and pictured me publicly as a "bad guy" - I let it go of course, but please refrain for keeping doing that.
19:00:44
JuanDaugherty
i had a controlled nuclear exchange yesterday that resulted in the slaking off of a whole set of volk
19:01:24
jmercouris
jackdaniel: That's not the case at all, I only said *exactly* what you said which was "doesn't sound plausible" - which is saying "you are a liar", if there is another interpretation, feel free to explain it
19:02:32
jackdaniel
there is - I have even said that I give you a benefit of a doubt. you often ask very basic questions which are very basic, what shows, that you need to work a little on your basics
19:03:36
jmercouris
jackdaniel: Okay, I will take this at face value then, I'm sorry for accusing you of calling me a liar
19:05:21
stacksmith
jmercouris: from my perspective it looks like you have some kind of a thing about being an idiot savant. incapable of understanding basic things but cranking out Mozart-like code.
19:06:48
thodg
and then most lispers are still ignorant (including) about synchronisation primitives
19:06:50
stacksmith
As in "I can't be bothered to look up 'intern' on chls", but look at my "working code"
19:06:53
jackdaniel
this chapter is about packages and symbols: http://www.gigamonkeys.com/book/programming-in-the-large-packages-and-symbols.html
19:06:55
jmercouris
there are many gaps in my knowledge, but it doesn't mean I'm completely ignorant
19:08:50
stacksmith
jmercouris: you may not be completely ignorant, but close. And there is nothing wrong with that. Being proud of it is another thing.
19:09:32
pjb
stacksmith: but when you edit a lisp file, you are not editing code with any expected syntax! You are editing DATA! Why should anybody suppose that (with-open-file 42) is not a valid data list to be put in a lisp file? Who knows how this file will be loaded and interpreted?
19:09:41
jackdaniel
OK, enough is enough, Im getting back to code – I think that offtopic should move to lispcafe, because it's not very productive to read backlog like that
19:09:52
pjb
You're all forgetting that lisp is a META META META META META … META PROGRAMMING language !
19:10:43
thodg
beware humans have a difficult context switch as linear programming is not friendly talk at all
19:10:58
stacksmith
pjb: who says anything about files? I am actually talking about editing lisp forms!
19:11:34
pjb
(eval '(with-open-file 42)) #| ERROR: 42 can't be destructured against the lambda list (ccl::var ccl::filename . ccl::args), because it does not contain at least 2 elements. |#
19:11:38
caffe
jmercouris: i interpret it as this: ignorance is part of the human condition. it's benign in itself. on the other hand, taking pride in it will only limit yourself. i guess i'd see it as 'well, you might be ignorant about some things' (not unusual for someone 6 months into lisp), 'but at least you don't take pride in being ignorant'
19:12:25
jmercouris
caffe: based on stacksmiths prior messages to me I read something along th elines of "you are ignorant as fuck, which is not a problem, but you are also proud of it- wow"
19:12:28
pjb
(handler-case (eval '(with-open-file 42)) (error () 'good-result)) #| --> good-result |#
19:13:13
pjb
But foremost, when you have a form in a file (or elsewhere), you don't know in advance how it will be processed, to what it will be given and to what purpose.
19:13:19
JuanDaugherty
but I hate them now and I will never participate in their community, it's not the first time it's happened and without cause
19:14:00
pjb
As a meta programming programming language, you can write interpreters and compilers trivially in lisp, so perhaps (with-open-file 42) as a perfectly good and intentional meaning. Only the human programmer can know it, not an editor!
19:14:25
stacksmith
pjb: the context of the data decides how to see it. Outside of any context, the implied lambda-list of any list is (&rest rest); inside a defun, as an operator form, with-open-file is obviously a form that needs to follow a certain structure.
19:15:57
thodg
but truly, I might sound like an old angry "blurby" C coder now, but Common Lisp does not specify even its LIST or SEQUENCE structures as data in the sense it does not provide for a possible binary serialization of it
19:16:02
pjb
See for example the file: https://gitlab.com/com-informatimago/com-informatimago/blob/master/common-lisp/html-base/html401.lisp
19:16:04
whoman
i believe it too, even if we die it is better to take the morally or ethically higher ground (selfless)
19:16:41
stacksmith
Ahem, gentlemen, please. If I start with something I know is a definition of a function in an image, I can know for certain that the forms inside follow lambda-lists as stored in the image. And if not, I can assume a generic list.
19:16:44
pjb
Notice it doesn't contain an IN-PACKAGE form (so less context; but even with a IN-PACKAGE, it would still be interpreted in an a-priori unknown context!)
19:17:07
pjb
this file is loaded actually in two different context, with different sets of defelement etc macros.
19:17:55
pjb
So the meaning of this data depends on how it's loaded. (or of course, as a human, you can infer a generalized meaning, but the lisp system doesn't know it).
19:18:08
stacksmith
pjb: Assuming that a top form has a lambda-list, all inside it just follows rules like a machine. You are talking about files, I am not.
19:18:54
pjb
You have to assume CL:LOAD or CL:COMPILE-FILE, and you have to assume some restricted setting of the *read-…* variables and of the *READTABLE* with all the reader macros!
19:19:08
stacksmith
pjb: I am, because that is a given. I am talking about an editor that edits forms, not files.
19:19:23
pjb
You have to make a lot of assumption to restrict the interpretation of the data you write, as something related to the bare lisp defined by the standard.
19:20:20
pjb
You have to expect that it will be interpreted in some context and you have to learn about this context before making any assumption.
19:21:02
stacksmith
pjb: If lisp can compile it using the lambda-lists of constituent forms, I can use these to figure out the structure.
19:21:59
pjb
Perhaps I've set it up in the asd file so that the data is loaded and processed by my own interpreter of my own language!
19:22:07
stacksmith
_death: it is no less restrictive than emacs. But it will not edit garbage or ever get lost in parentheses where it counts.
19:22:44
pjb
(defun lisp (foo) (format nil "This is ~S" foo)) #| --> lisp |# (lisp "data") #| --> "This is \"data\"" |#
19:22:50
random-nick
what if the user has a reader macro which randomly decides whenever to discard or read a form?
19:23:27
pjb
thodg: this is also a method of development commonly practized, (and definitely supported by the REPL and lisp debuggers), to write data that cannot be interpreted by the current lisp image.
19:23:47
_death
stacksmith: the way I see it, the editor should stay out of my way, not tell me what char to insert or not
19:23:59
pjb
thodg: you enter it at the REPL, and you get an error. Then you use the debugger and restarts, to define what needs to be defined, and restart the computation; repeat until it does what you want it to do!
19:24:33
pjb
see for eaxmple: https://groups.google.com/forum/#!msg/comp.lang.lisp/oGmha6PbAD4/kmpG51wjJ6gJ
19:25:26
stacksmith
pjb: _death: I think you are missing the point. It doesn't have to get in your way. But if you set out to edit a function, the editor can actually help, for instance.
19:25:29
pjb
This is also a feature of lisp that makes it so powerful: You don't need to have language elements to implement a solution. You can write the solution to your problem first, and then extend the lisp language so that it becomes able to run your solution!
19:26:18
pjb
stacksmith: it could, but not emacs. Slime tries to help by communicating between emacs and the lisp image. But it's very limited and restricted.
19:26:57
jackdaniel
having a structural editor could have other benefits - you could associate arbitrary information with the block of code without changing its textual representation ofr instance
19:27:42
stacksmith
pjb: exactly. Editing is not the same for different things. Editing Lisp code is a very specific task, and Slime is a feeble attempt to help. Paredit is a feeble attempt. There are better ways.
19:28:10
jackdaniel
or preserving older versions of the code in the structure holding the current block version
19:28:52
stacksmith
jackdaniel: thanks you! You could do things like associating comments with blocks of code, for god's sake.
19:29:12
pjb
Here is a structural editor: http://informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/sedit/index.html
19:33:16
whoman
slime may not be required if say, emacs was written in common lisp; or if common lisp could understand the elisp.
19:34:17
whoman
true. but, when the muscle memory is trained to do paredit for example, the structure is used as the elements, rather than the characters and lines and columns
19:34:22
jackdaniel
being written in a language and having a programming support are different things. if emacs were written in common lisp it wouldn't magically gain a debugger
19:35:30
jackdaniel
whoman: there is a reason slime has sldb (and doesn't just bring implementation-specific console-based debugger) - it is better
19:37:17
aeth
thodg: Ime manual paren balancing once the ) matches a ( that's off the screen is imo too hard (although perhaps the solution is monitors in portrait mode instead of paredit... or length limits for functions)
19:37:31
whoman
didnt like it? do you move the cursor around with the arrow keys? backspace each letter of whole words? then dont worry about it.....
19:38:43
aeth
thodg: I often find that it's easier to write a gigantic mess with 120 column long lines in places and a function that can easily be 120+ lines long. As long as it's refactored later. Start with something that works, then make it beautiful.
19:39:20
whoman
if you keep a layer between you and the computer then you will always be fighting with it
19:41:04
stacksmith
CLIM, sadly renders text in such an awful way that it is not usable. And that is just the start of its ugliness.
19:42:59
thodg
that's not what i meant i have a tiling wm, so i would like emacs to not split buffers but make new windows
19:43:02
whoman
aside from WindowMaker its my favorite. i wish i knew about it when it was fresh. i wish things were always this way..
19:43:13
aeth
_death: The part that's easier to start ugly and then fix it is usually the part that would be equivalent to main() in a language with that convention.
19:44:25
whoman
C-x-2 now i've got 2 seperate X windows. those are each an emaccs window, in one emacs frame. dig ?
19:45:06
aeth
thodg: I don't really think that either works when you get to a really large program. You kind of have to do both, simultaneously, and meet in the middle
19:47:27
_death
aeth: still I find wishful thinking very useful.. reminds me how oftentimes I wrote something top-down and others jump "but there's no definition for X".. yeah, that's what I'm going to write next.. both bottom-up and top-down are useful
19:48:30
aeth
_death: On the other hand, it's very powerful to always have a working program... so a stub is probably better than undefined.
19:50:03
whoman
hmm... and future energy from maintaining two [near-] exact pieces of code in multiple places
19:50:40
whoman
got to know when to expand and fan out in complexity or pull in and compress into simplicity
20:56:08
didi
OK, this is interesting: I'm used to use 'function and #'function as synonyms (except when using FLET), until `complement' barfed at me.
20:58:09
Bike
well, you should try to use functions directly unless you have a reason not to, though
21:01:52
didi
dlowe: This is why I chose to use function designators. Makes it easier to program in an dynamic environment
21:04:09
dlowe
the clhs contradicts itself on this - the argument list says it takes only a function
21:04:15
dlowe
but the notes say (complement x) == #'(lambda (&rest arguments) (not (apply x arguments)))
21:07:16
dlowe
the X3J13 cleanup note has a joke in it http://www.lispworks.com/documentation/HyperSpec/Issues/iss172_w.htm
21:21:52
Bike
well, i mean, if a function lambda list is (foo bar) you know it takes two arguments, and you have to know that to call it.
21:22:06
pjb
Basically the only case where it's necessary, is in defstruct for boa constructors, and the only case where it's easier to use is in macros, to avoid having to parse and re-generate declarations.
21:22:21
Bike
if it's (foo bar &aux baz) then it still takes two arguments and that's still how you call it; the &aux is irrelevant to the caller.
21:22:38
pjb
On other cases, it can be admited when you hesitate between parameter and computed value…
21:26:22
Bike
(defun factorial (n &aux accum) (dotimes (i n accum) (setf accum (* (1+ i) accum)))) is a function using &aux, don't know if it's what you have in mind though
21:29:19
ig88th
Xach: is there anything I can do to help you fix the issues with quickproject on Windows?
21:33:15
Xach
ig88th: can you paste the contents of your ~/quicklisp/local-projects/system-index.txt file?
21:33:25
stacksmith
Bike: I am curious if &aux shows up in the lambda-lists stored by various implementations...
21:35:08
Bike
on sbcl if i do (defun foo (&aux x) x) and theN (describe 'foo) the lambda list with &aux comes up
21:37:00
ig88th
SBCL seems to work for creating and reading quickproject created projects, ccl not so much. I updated my question on StackOverflow: https://stackoverflow.com/questions/48675274/when-installing-quicklisp-on-windows-10-where-should-i-put-config-common-lis
21:37:57
stacksmith
Bike: it is a weird thing like :allow-other-keys argument, which is an argument but not a parameter?
21:38:18
Xach
ig88th: i know the issue with ccl. last night it seemed like something in sbcl wasn't working as it should.
21:38:49
Bike
all i'm saying is that whether or not there's &aux is irrelevant to, for example, how many arguments a function can validly receive, or the forms of those arguments
21:38:51
ig88th
yeah SBCL can create a working project using quickproject, but after I restart slime I can't load the project
21:39:11
ig88th
Xach: yeah SBCL can create a working project using quickproject, but after I restart slime I can't load the project
21:39:21
stacksmith
Bike: assuming the terminology is argument is the thing in the invocation, and parameter is the thing that describes it in the lambda-list.
21:40:29
Xach
ig88th: oh, I think I know the issue with that, too, maybe - I think it's differing line-ending conventions when running sbcl vs ccl on windows.
21:41:04
stacksmith
Bike: right, but it is in the parameter list... while :allow-other-keys is not in the parameter list but is a valid argument if &key is enabled.
21:41:54
ig88th
Xach: I know ccl can't read what it creates, and SBCL can read what it creates (for that session), but I haven't tested them against each others quickprojects if you know what I mean
21:42:12
stacksmith
Bike: anyway, it's not important. I just wanted to know if SBCL ever shows it in the lambda-lists it stores.
21:42:22
Xach
ig88th: one quick way to test is to clear out quicklisp/local-projects/ and make a new project in there with sbcl, then restart and see if it's still loadable.
21:43:46
ig88th
Xach: one thing I have noticed is that sbcl creates ~\AppData\Roaming\quicklisp\local-projects as well as ~\quicklisp\local-projects
21:46:55
Xach
that is the one to reference for this purpose. remove everything in the quicklisp/local-projects/ directory in there, including the index file.
21:50:22
ig88th
Xach: okay I deleted everything and created another ~\quicklisp\local-projects\test project and it can't be loaded by sbcl after restarting the session
21:53:34
z3t0
Is there some way to make this neater? I thought of trying (caddar) but that didn't work
21:54:48
didi
z3t0: Like, if I have a conceptual xy-point made of a cons cell, like (X . Y), I would use (point-x point) to retrieve X, and not (car point).
21:55:59
didi
z3t0: Indeed. But it is neater. Also, you could change the representation later, and not have to change every call.
22:20:23
ig88th
Xach: after deleting everything and running (quickproject:make-project "~/quicklisp/local-projects/test/" :depends-on '(vecto)) it generated a folder called test in ~\AppData\Roaming\quicklisp\local-projects but not in ~\quicklisp\local-projects
22:21:48
ig88th
Xach: ~\AppData\Roaming\quicklisp\local-projects does not have a system-index.txt, and the one in ~\quicklisp\local-projects is empty (just an empty text file)
22:25:14
ig88th
Xach: I mean that SBCl creates projects inside of ~\AppData\Roaming\quicklisp\local-projects instead of ~/quicklisp/ocal-projects\
22:25:34
ig88th
Xach: I mean that SBCl creates projects inside of ~\AppData\Roaming\quicklisp\local-projects instead of ~\quicklisp\local-projects\ (sorry, hit enter by accident)
22:26:52
Xach
ig88th: what version of sbcl are you using? (lisp-implementation-version) will tell you...
22:36:01
ig88th
Xach: the ql:add-to-init-file which adds this: https://gist.github.com/ig88th/e8c618fbae7e02ef5726456886c46215
22:38:45
dim
after a day of Python and C (and make) hacking some lisp at night feels pretty good, just saying ;-)
22:40:54
Xach
ig88th: what do you get from (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname)) ?
22:48:09
Xach
ig88th: well, quicklisp is (somehow) getting loaded from C:/users/ig88t/quicklisp/setup.lisp. It would help to dig around and see how.
22:48:46
rumbler31
windows and emacs disagree about where the home directory is, i've been bitten by that before
22:48:51
Xach
Where is your .sbclrc? Is there more to it you didn't paste? Is there more than one .sbclrc? How did you get sbcl?
22:49:12
ig88th
I am using slime provided by (load (expand-file-name (concat default-directory "/quicklisp/slime-helper.el"))) from quicklisp-slime-helper
22:50:33
ig88th
Xach: my .sbclrc is located at ~\. I got sbcl through this link: https://sourceforge.net/projects/sbcl/files/sbcl/1.4.2/sbcl-1.4.2-x86-64-windows-binary.msi/download?use_mirror=svwh
22:53:24
ig88th
Xach: it also contains a file called .sbclrc that has these contents: https://gist.github.com/ig88th/1b6b058a1c05d08af04031ed4555436f
22:55:23
Xach
ig88th: quicklisp's home is in /Users/ig88t/quicklisp/ which is not what sbcl thinks of as ~/quicklisp/. So when you work with ~/quicklisp/local-projects/ in sbcl it is not the one that is known to quicklisp automagically.
22:55:48
Xach
ig88th: you would have better quickproject luck by using (quickproject:make-project "/Users/ig88t/quicklisp/local-projects/myproject/")
22:58:37
Xach
So there are some ways out of the hassle. If you stick with ccl (which is good) you could just not use quickproject until the fix is released later this month. It's not too hard to just make .asd and other files directly.
22:58:57
Xach
If you switch to sbcl it would help to move the quicklisp installation into what quicklisp thinks of as ~/quicklisp/
22:59:46
ig88th
Xach: that fix works! I can now load projects created previous to the current session
23:08:27
drmeister
Hey folks - does anyone do Javascript programming for developing interactive web based apps? I'd like to talk to someone about developing the browser side (Javascript code) to implement some new jupyter widgets that would work with our cl-jupyter kernel.
23:10:27
Shinmera
drmeister: I do, but I like to do as little of it as I possibly can, so probably not the right person for this.
23:14:02
iqubic
Shinmera: I want to work on making a neural network with perceptrons and such, but that is too advanced
23:15:14
Shinmera
Afaiu neural nets and perceptrons are well defined, so just implement the algorithms
23:15:42
Bike
yeah, perceptrons are simple. teaching them is less simple, but it's still not too bad
23:16:55
Shinmera
As with anything in neural nets, getting them to actually learn anything useful is the hard part.
23:20:47
whoman
i wonder if there is a lisp diff. but diffing the source files will reveal the precise and accurate by science differences between the two, every byte of their existence
23:21:04
iqubic
Is one of them better than the other. I notice that lispy has evil bindings via evil-lispy. I use evil, so I am more inclined to use that,
23:21:15
whoman
there is also "lisp at the speed of thought". i tried lispy and that one but, i returned to paredit because i didnt feel like learning somethuing new
23:21:44
whoman
paredit might have evil bindings, but that would be a good criteria for choosing lispy
23:22:26
Ukari
the symbol is weird, i use a temp variable in function but why the symbol could found in package
23:26:56
didi
Ukari: This is an interesting question. Lexical variables are different than global ones. There is a cool excerpt about it in PAIP.
23:27:46
Ukari
if a define a function test2 like test1, there still only one symbol "TEMP" but it don't tell any detail meaningful information
23:28:12
didi
Ukari: I don't have the necessary skills to explain it to you, unfortunately. Maybe someone else can jump in.
2:06:50
sjl
if you're an ACM member you can get a PDF of it https://dl.acm.org/citation.cfm?id=530559
2:08:55
iqubic
I don't think I want to read the book, because I don't have a good way to access the book.
2:55:33
Bike
(setf x 7) is modifying the binding of x, and that binding is created when the function is called
2:56:08
iqubic
Is see. Is there a way to make the first example actually change the value of x outside the function?