2015-03-08T00:00:00Z Takumo quit (Remote host closed the connection) 2015-03-08T00:00:45Z faheem_ quit (Quit: Connection closed for inactivity) 2015-03-08T00:01:31Z Ethan- joined #lisp 2015-03-08T00:01:36Z kcj joined #lisp 2015-03-08T00:07:15Z ehu quit (Quit: Leaving.) 2015-03-08T00:08:03Z EvW quit (Ping timeout: 265 seconds) 2015-03-08T00:08:40Z eschatologist quit (Quit: Textual IRC Client: www.textualapp.com) 2015-03-08T00:17:43Z sunwukong quit (Ping timeout: 265 seconds) 2015-03-08T00:23:09Z sol__ quit (Ping timeout: 245 seconds) 2015-03-08T00:24:38Z jlongster joined #lisp 2015-03-08T00:25:24Z brucem joined #lisp 2015-03-08T00:25:46Z brucem quit (Changing host) 2015-03-08T00:25:46Z brucem joined #lisp 2015-03-08T00:30:55Z vaporatorius quit (Remote host closed the connection) 2015-03-08T00:31:15Z jlongster quit (Ping timeout: 265 seconds) 2015-03-08T00:34:57Z linux_dream joined #lisp 2015-03-08T00:35:02Z k-stz quit (Remote host closed the connection) 2015-03-08T00:37:21Z Davidbrcz joined #lisp 2015-03-08T00:39:04Z linux_dream quit (Client Quit) 2015-03-08T00:41:03Z jlongster joined #lisp 2015-03-08T00:43:17Z johann joined #lisp 2015-03-08T00:45:13Z johann quit (Remote host closed the connection) 2015-03-08T00:45:38Z jlongster quit (Ping timeout: 252 seconds) 2015-03-08T00:46:44Z hitecnologys_ joined #lisp 2015-03-08T00:49:10Z hitecnologys quit (Ping timeout: 255 seconds) 2015-03-08T00:51:29Z cadadar quit (Quit: Leaving.) 2015-03-08T00:54:53Z CrazyEddy quit (Remote host closed the connection) 2015-03-08T00:57:47Z zeitue quit (Ping timeout: 245 seconds) 2015-03-08T01:01:24Z stepnem quit (Ping timeout: 256 seconds) 2015-03-08T01:01:41Z Shinmera quit (Quit: しつれいしなければならないんです。) 2015-03-08T01:03:45Z cpc26 joined #lisp 2015-03-08T01:04:27Z cpc26_ quit (Ping timeout: 245 seconds) 2015-03-08T01:04:29Z manuel__ quit (Quit: manuel__) 2015-03-08T01:07:58Z emaczen quit (Remote host closed the connection) 2015-03-08T01:08:53Z eazar001 quit (Ping timeout: 240 seconds) 2015-03-08T01:09:47Z eazar001 joined #lisp 2015-03-08T01:11:21Z zeitue joined #lisp 2015-03-08T01:15:01Z tharugrim quit (Quit: WeeChat 1.2-dev) 2015-03-08T01:16:22Z mishoo quit (Ping timeout: 244 seconds) 2015-03-08T01:22:12Z ajtulloch joined #lisp 2015-03-08T01:24:38Z Davidbrcz quit (Ping timeout: 244 seconds) 2015-03-08T01:25:20Z f-a joined #lisp 2015-03-08T01:26:33Z hiroakip quit (Ping timeout: 252 seconds) 2015-03-08T01:26:38Z ajtulloch quit (Read error: Connection reset by peer) 2015-03-08T01:27:23Z ajtulloch joined #lisp 2015-03-08T01:32:57Z jlongster joined #lisp 2015-03-08T01:35:05Z j0nii joined #lisp 2015-03-08T01:36:24Z huza joined #lisp 2015-03-08T01:37:23Z jlongster quit (Ping timeout: 240 seconds) 2015-03-08T01:38:54Z k-dawg joined #lisp 2015-03-08T01:44:02Z paradoja quit (Ping timeout: 245 seconds) 2015-03-08T01:44:03Z bgs100 joined #lisp 2015-03-08T01:49:00Z CrazyEddy joined #lisp 2015-03-08T01:51:28Z guicho quit (Remote host closed the connection) 2015-03-08T01:55:35Z hiyosi quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-03-08T01:56:08Z johann joined #lisp 2015-03-08T01:57:07Z huza quit (Quit: WeeChat 0.3.8) 2015-03-08T01:57:36Z mj-0 joined #lisp 2015-03-08T02:01:10Z johann quit (Ping timeout: 272 seconds) 2015-03-08T02:03:45Z chameco quit (Quit: ZNC - http://znc.in) 2015-03-08T02:04:21Z chameco joined #lisp 2015-03-08T02:04:54Z mj-0 quit (Ping timeout: 246 seconds) 2015-03-08T02:05:27Z trn quit (Ping timeout: 244 seconds) 2015-03-08T02:09:04Z stardiviner joined #lisp 2015-03-08T02:10:46Z chameco left #lisp 2015-03-08T02:22:45Z trn joined #lisp 2015-03-08T02:23:50Z j0nii quit (Remote host closed the connection) 2015-03-08T02:24:10Z trn quit (Remote host closed the connection) 2015-03-08T02:25:14Z trn joined #lisp 2015-03-08T02:26:03Z j0nii joined #lisp 2015-03-08T02:26:19Z Bicyclidine quit (Quit: you failed) 2015-03-08T02:26:30Z Quadrescence joined #lisp 2015-03-08T02:27:26Z ordered-pyon is now known as applicative-pyon 2015-03-08T02:32:48Z f-a quit (Quit: leaving) 2015-03-08T02:33:37Z hiyosi joined #lisp 2015-03-08T02:39:17Z jlongster joined #lisp 2015-03-08T02:40:05Z nikki93 joined #lisp 2015-03-08T02:41:11Z nikki93 quit (Remote host closed the connection) 2015-03-08T02:43:41Z ovenpasta quit (Ping timeout: 265 seconds) 2015-03-08T02:43:57Z fierydiarreha quit (Read error: No route to host) 2015-03-08T02:46:07Z nikki93 joined #lisp 2015-03-08T02:48:41Z smokeink joined #lisp 2015-03-08T02:49:18Z nikki93 quit (Remote host closed the connection) 2015-03-08T02:58:38Z brian_o joined #lisp 2015-03-08T03:00:47Z ajtulloch quit (Ping timeout: 252 seconds) 2015-03-08T03:01:05Z mlamari joined #lisp 2015-03-08T03:01:05Z devll quit (Ping timeout: 265 seconds) 2015-03-08T03:01:11Z mlamari quit (Read error: Connection reset by peer) 2015-03-08T03:01:35Z vhost- quit (Quit: WeeChat 1.0) 2015-03-08T03:04:55Z bb010g joined #lisp 2015-03-08T03:06:11Z ajtulloch joined #lisp 2015-03-08T03:11:44Z munksgaard joined #lisp 2015-03-08T03:12:16Z innertracks joined #lisp 2015-03-08T03:19:51Z Karl_Dscc joined #lisp 2015-03-08T03:23:18Z robot-beethoven quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2015-03-08T03:24:05Z vhost- joined #lisp 2015-03-08T03:25:20Z j0nii quit (Remote host closed the connection) 2015-03-08T03:25:45Z wemeetagain joined #lisp 2015-03-08T03:26:27Z ajtulloch quit (Ping timeout: 252 seconds) 2015-03-08T03:31:26Z theseb quit (Quit: Leaving) 2015-03-08T03:31:59Z beach joined #lisp 2015-03-08T03:32:07Z beach: Good morning everyone! 2015-03-08T03:32:08Z minion: beach, memo from jackdaniel: it would be great, thanks!, you can report it at http://sourceforge.net/p/ecls/_list/tickets, or mail me at jackdaniel@hellsgate.pl :-) 2015-03-08T03:32:14Z qubitnerd joined #lisp 2015-03-08T03:33:20Z smokeink: good morning beach 2015-03-08T03:33:20Z minion: smokeink, memo from pjb: http://paste.lisp.org/+34Q4 2015-03-08T03:34:46Z smokeink: http://paste.lisp.org/display/146135 why it doesn't let me step in ? 2015-03-08T03:36:47Z beach: smokeink: I don't know the answer, but I might guess that you didn't compile with a high enough value on DEBUG. 2015-03-08T03:37:54Z smokeink: yes, that was it ! 2015-03-08T03:38:08Z beach: smokeink: I set (optimize (speed 0) (debug 3) (safety 3)) in my ~.sbclrc. 2015-03-08T03:38:17Z smokeink: good idea 2015-03-08T03:39:54Z BlueRavenGT joined #lisp 2015-03-08T03:41:50Z smokeink: are there any shortcuts for the 0:, 1:, 2:,3: etc restarts in slime ? all i know is the abort shortcut 2015-03-08T03:42:29Z zyaku quit (Ping timeout: 256 seconds) 2015-03-08T03:44:17Z |3b|: those are the shortcuts (0,1,2,3 etc) 2015-03-08T03:45:41Z |3b|: there is also q for 'quit' and c for 'continue', though not sure what difference between 'quit' and 'abort' is 2015-03-08T03:46:56Z |3b|: ah, i guess 'abort' picks the restart and 'quit' tries to exit directly or something 2015-03-08T03:47:40Z smokeink: ok 2015-03-08T03:47:53Z brian_o: i know "restart" is a loaded term, how do i "restart" my sbcl session when i'm running in emacs-slime? right now, embarassingly enough, i exit emacs entirely and relaunch 2015-03-08T03:48:25Z |3b|: ,restart-inferior-lisp in repl 2015-03-08T03:48:47Z brian_o: awesome! 2015-03-08T03:48:48Z brian_o: ty 2015-03-08T03:48:55Z |3b|: which you can abbreviate to ,rest or so 2015-03-08T03:49:08Z defaultxr quit (Ping timeout: 256 seconds) 2015-03-08T03:49:13Z taylanub quit (Disconnected by services) 2015-03-08T03:49:19Z |3b|: or kill the *inferior-lisp* buffer and run M-x slime again 2015-03-08T03:49:35Z taylanub joined #lisp 2015-03-08T03:51:31Z fragamus joined #lisp 2015-03-08T03:51:47Z fragamus quit (Max SendQ exceeded) 2015-03-08T03:52:22Z karswell quit (Ping timeout: 245 seconds) 2015-03-08T03:54:52Z alvis` quit (Ping timeout: 240 seconds) 2015-03-08T03:55:46Z defaultxr joined #lisp 2015-03-08T03:57:29Z Karl_Dscc quit (Remote host closed the connection) 2015-03-08T03:59:59Z drmeister: beach: Hi - I have an iterative version of eliminate-typeq if you want it - I'm just testing it. 2015-03-08T04:00:39Z beach: I just pushed mine. 2015-03-08T04:00:41Z Subfusc quit (Quit: ZNC - http://znc.in) 2015-03-08T04:00:50Z drmeister: Duh! 2015-03-08T04:01:01Z beach: but give me your code anyway. 2015-03-08T04:01:43Z ben_vulpes: i'm accustomed to requirements.txt in pyland, gemfiles in rubby, and project.clj in clojure - what's the savvy, explicit approach to package management in common lisp? 2015-03-08T04:02:28Z beach: ben_vulpes: You can't assume that people in #lisp know those. What is it that you want to do? 2015-03-08T04:02:32Z drmeister: That's prettier than mine 2015-03-08T04:02:55Z Quadrescence: ben_vulpes, my-project.asdf 2015-03-08T04:03:03Z Quadrescence: .asd* 2015-03-08T04:03:13Z ben_vulpes: beach: put together a text file that i can use when deploying my derpy little projects that helps me not shoot myself in the foot when it comes time to install all of the appropriate packages. 2015-03-08T04:03:18Z beach: ben_vulpes: Furthermore, the word "package" has a different meaning in Common Lisp compared to in other languages. 2015-03-08T04:03:26Z ben_vulpes: oop, well, my mistake. 2015-03-08T04:03:41Z Quadrescence: ben_vulpes, you define a system with ASDF. Within your .asd file, you specify :DEPENDS-ON with a list of dependencies 2015-03-08T04:03:46Z beach: minion: Please tell ben_vulpes about ASDF. 2015-03-08T04:03:47Z minion: ASDF: No definition was found in the first 5 lines of http://www.cliki.net/ASDF 2015-03-08T04:04:43Z drmeister: beach: How does yours test if the node was visited? I see that it sets the visited hash-table but I don't see the test. 2015-03-08T04:04:44Z ben_vulpes: beach: thank you. 2015-03-08T04:05:22Z beach: drmeister: I don't know. I am still asleep. Hold on... 2015-03-08T04:07:07Z a2015_ quit (Quit: Page closed) 2015-03-08T04:07:08Z beach: drmeister: It didn't. Try now. 2015-03-08T04:07:15Z drmeister: beach: Also you have (when (typep instruction 'cleavir-ir:typeq-instruction) (register (cleavir-ir:code instruction))) 2015-03-08T04:07:25Z beach: drmeister: That must mean that none of my functions have loops. Hmm. 2015-03-08T04:07:28Z ajtulloc_ joined #lisp 2015-03-08T04:07:33Z drmeister: Shouldn't that read: (when (typep instruction 'cleavir-ir:enclose-instruction) (register (cleavir-ir:code instruction))) 2015-03-08T04:07:36Z beach: Wow. 2015-03-08T04:07:37Z scymtym quit (Ping timeout: 264 seconds) 2015-03-08T04:07:41Z beach: Definitely not awake. 2015-03-08T04:08:41Z drmeister: Here's mine: 2015-03-08T04:08:44Z drmeister: https://www.irccloud.com/pastebin/1JvbaVP7 2015-03-08T04:08:55Z {0}grant joined #lisp 2015-03-08T04:09:00Z ggole joined #lisp 2015-03-08T04:09:05Z beach: I pushed another version. Sorry for the messup. 2015-03-08T04:09:14Z drmeister: No problem 2015-03-08T04:09:22Z beach: ben_vulpes: https://common-lisp.net/project/asdf/asdf/index.html#Top 2015-03-08T04:11:03Z drmeister: Looks good. 2015-03-08T04:11:07Z drmeister: Trying 2015-03-08T04:11:56Z beach: Since we don't generate any TYPEQ-INSTRUCTIONs, it should be safe to use :) 2015-03-08T04:12:57Z beach: drmeister: Rather than (if node (progn ...)) use (unless (null node) ...) 2015-03-08T04:13:36Z drmeister: It has an else clause 2015-03-08T04:13:38Z beach: drmeister: Use (let (x) only if x is "uninitialized", not as a shorthand for (let ((x '())) 2015-03-08T04:13:49Z beach: drmeister: Then you need to indent your code. 2015-03-08T04:14:06Z drmeister: I do - i forgot to use paste.lisp.org 2015-03-08T04:14:07Z beach: drmeister: There is nothing aligned under (progn. 2015-03-08T04:14:38Z beach: drmeister: You should read the famous luv-slides for Common Lisp style. 2015-03-08T04:14:47Z drmeister: http://paste.lisp.org/display/146136 2015-03-08T04:15:52Z beach: drmeister: Don't use (when (cdr ...). When the intention is to check for an empty list, use (unless (null ...) 2015-03-08T04:16:13Z beach: The first argument of a when or unless should have the intention of a Boolean. 2015-03-08T04:16:39Z pacon joined #lisp 2015-03-08T04:16:47Z beach: drmeister: Dont' use (if node... Use (if (null node) ... 2015-03-08T04:17:16Z beach: drmeister: Don't mix CDR and FIRST on the same list. 2015-03-08T04:17:29Z drmeister: Whats wrong with generalized booleans? 2015-03-08T04:17:41Z beach: drmeister: You need to read the LUV-SLIDES. 2015-03-08T04:17:47Z badkins_ quit 2015-03-08T04:17:52Z beach: It is about intended meaning. 2015-03-08T04:18:07Z beach: It is about programmer expectation rather than compiler expection. 2015-03-08T04:18:10Z beach: expectation 2015-03-08T04:19:07Z beach: drmeister: You always take FIRST of successors even when there are no successors. 2015-03-08T04:19:29Z drmeister: (if node ...) becomes (if (not (null node)) ...) - correct? 2015-03-08T04:19:58Z beach: drmeister: Morally, (if (first x) ... means "I know X is not the empty list, and I am testing the Boolean first element of X. 2015-03-08T04:20:41Z beach: drmeister: Yes, but it is better to test the special case first. 2015-03-08T04:20:49Z beach: drmeister: (if (null node) ... 2015-03-08T04:20:55Z ajtulloc_ quit (Read error: Connection reset by peer) 2015-03-08T04:21:00Z beach: drmeister: Because you want to structure your code as a proof by induction. 2015-03-08T04:21:10Z Quadrescence: some say IF should be for expressions and COND should be for side effects. ;) 2015-03-08T04:21:29Z ajtulloch joined #lisp 2015-03-08T04:21:30Z beach: drmeister: Always make sure the reader can be sure the special case works first. 2015-03-08T04:21:51Z drmeister: How about I read the LUV-SLIDES and we follow up on this some other time. 2015-03-08T04:22:03Z beach: Good idea. 2015-03-08T04:24:21Z drmeister: I've got a date with a compiler. 2015-03-08T04:24:35Z beach: Sure. 2015-03-08T04:24:49Z drmeister: Compiling the Clasp Common Lisp sources now with Cleavir/Clasp 2015-03-08T04:24:54Z drmeister: CCCCCool 2015-03-08T04:25:40Z drmeister: Will TRAVERSE give me the same trouble? 2015-03-08T04:25:59Z drmeister: Or in other words - are there any other recursive traversals of the HIR? 2015-03-08T04:26:22Z beach: Yeah. 2015-03-08T04:26:40Z beach: They might use less stack though. 2015-03-08T04:26:48Z beach: No :AROUND methods. 2015-03-08T04:27:10Z drmeister: Does TRAVERSE get called before ELIMINATE-TYPEQ? 2015-03-08T04:27:29Z beach: I don't remember. I think so. 2015-03-08T04:27:38Z drmeister: If so then I've already done it. 2015-03-08T04:27:48Z drmeister: We'll find out soon enough. It's compiling now. 2015-03-08T04:27:55Z beach: ELIMINATE-TYPEQ should use a generic TRAVERSE that should be iterative. 2015-03-08T04:28:49Z drmeister: You wouldn't believe the trouble the LLVM folks went through to write the equivalent of a TRAVERSE in C++ for the Clang AST. They call it the "macro monster". 2015-03-08T04:29:14Z beach: Because they don't have first-class functions? 2015-03-08T04:29:34Z beach: I thought they did actually. No? 2015-03-08T04:30:06Z drmeister: All sorts of reasons. The main one was they don't have a common base class of all AST classes - there are three (3) (TROIS) base classes for AST classes. 2015-03-08T04:30:16Z smokeink also needs to read the LUV-SLIDES 2015-03-08T04:30:30Z beach: Otherwise, I can believe it. I have seen thousands of examples of the amount of trouble people go through to avoid using Common Lisp. 2015-03-08T04:30:53Z beach: drmeister: I see, yes. 2015-03-08T04:31:39Z drmeister: Then they go and write pages and pages about their amazing traversal code - you can look it up google: clang::RecursiveASTVisitor 2015-03-08T04:33:18Z drmeister: Well, two pages. 2015-03-08T04:34:12Z axion: hello beach. i cant wait for your sandboxing to be available. i am faced with the most annoying problem 2015-03-08T04:34:58Z drmeister: Here's the progress so far: https://gist.github.com/anonymous/6aa6e75d5762c104799e 2015-03-08T04:35:09Z drmeister: That's Cleavir/Clasp doing the compilation. 2015-03-08T04:35:12Z beach: axion: What is the problem? 2015-03-08T04:35:51Z drmeister: Moment of truth - compiling setf.lsp 2015-03-08T04:36:13Z axion: beach: i use set-pprint-dispatch on (simple-array single-float (16)). another package i quickload for my project also does the same thing. the odd part is, even redefining my form does not replace theirs, when according to the docs it is supposed to first find a replacement and remove it. so mine never goes into effect under any circumstances 2015-03-08T04:36:59Z axion: what makes matters worse, is they are both for 4x4 matrices. one transposed, the other not. so it appears my math is incorrect 2015-03-08T04:37:41Z Bike: pprint dispatches have priorities, don't they? 2015-03-08T04:37:50Z axion: thats what i thought too 2015-03-08T04:38:01Z axion: the dependency package is stuck in use no matter what i try though 2015-03-08T04:38:10Z Bike: "The first action of set-pprint-dispatch is to remove any pre-existing entry associated with type-specifier." oh, well. 2015-03-08T04:38:14Z axion: exactly ^ 2015-03-08T04:38:18Z axion: but not the case for me 2015-03-08T04:38:46Z Bike: what implementation? 2015-03-08T04:38:50Z axion: sbcl 1.2.8 2015-03-08T04:40:27Z axion: i spent a whole day trying to figure out how my matrix math was wrong, when it was not. and the rest of the day trying to override the 'bad' dispatch 2015-03-08T04:40:38Z Bike: well, sbcl does delete right off, but it uses equal instaed of canonicalizing the types, so that might be an issue. 2015-03-08T04:40:49Z Bike: do both calls use exactly '(simple-array single-float (16))? 2015-03-08T04:41:03Z Bike: (actually taht might be a bug in sbcl) 2015-03-08T04:41:07Z axion: i know mine does. let me grep the source of the other package 2015-03-08T04:41:13Z beach: drmeister: That's excellent progress though. 2015-03-08T04:41:18Z Bike: er. no. the clhs specifies equal. that's stupid. 2015-03-08T04:41:42Z axion: https://github.com/nikodemus/sb-cga/blob/master/matrix.lisp#L35 2015-03-08T04:41:46Z axion: that is what the other package does 2015-03-08T04:42:25Z drmeister: Hmm, it compiled through the problem area but the generated LLVM module didn't pass LLVM's tests. This could be a bear to figure out. 2015-03-08T04:42:27Z Bike: Okay, well, (equal 'matrix '(simple-array single-float (16))) => NIL, so that's why it's not getting removed. 2015-03-08T04:42:45Z drmeister: I get the very helpful error message: Module error: NIL 2015-03-08T04:42:50Z innertracks quit (Quit: innertracks) 2015-03-08T04:42:51Z axion: Bike: how can i work around this? 2015-03-08T04:42:52Z Bike: god cl is stupid about types. 2015-03-08T04:43:00Z beach: drmeister: Sounds like an excellent activity for Sunday. 2015-03-08T04:43:04Z Bike: axion: is the matrix type an exported alias for the simple-array thing? 2015-03-08T04:43:32Z Bike: yes it is. 2015-03-08T04:43:44Z Bike: axion: use set-pprint-dispatch on 'matrix rather than '(simple-array single-float (16)). 2015-03-08T04:45:13Z faheem_ joined #lisp 2015-03-08T04:45:59Z Quadrescence quit (Quit: This computer has gone to sleep) 2015-03-08T04:46:17Z axion: Bike: that crashes my image when i reload it 2015-03-08T04:46:20Z axion: Help! 11 nested errors. SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded. 2015-03-08T04:46:31Z Bike: Igm qiq, 2015-03-08T04:46:34Z Bike: *Oh, wow 2015-03-08T04:46:45Z ajtulloch quit (Ping timeout: 252 seconds) 2015-03-08T04:46:46Z Bike: alright, let me try to reproduce. 2015-03-08T04:47:48Z Bike: ...okay, just doing (set-pprint-dispatch 'matrix 'pprint-matrix) does that. 2015-03-08T04:48:04Z axion: it might be worth mentioning i don't use set-pprint-dispatch inside a function like they do 2015-03-08T04:48:20Z drmeister: Here's the generated module - anybody spot any problems? https://gist.githubusercontent.com/anonymous/55bbfb1dfed752140927/raw/gistfile1.txt 2015-03-08T04:48:21Z axion: or, i guess they don't 2015-03-08T04:48:54Z Bike: okay, (set-pprint-dispatch 'anything 'anything) fails with recursive error fucked. that's pretty weird. 2015-03-08T04:49:03Z axion: wow 2015-03-08T04:49:04Z Bike: where anything isn't a defined type, specifically 2015-03-08T04:49:19Z axion: sounds like a bug for sure 2015-03-08T04:49:45Z axion: so not much i can do to use both packages and my pretty printer? 2015-03-08T04:50:29Z Bike: Well, anyway, make sure you're doing (set-pprint-dispatch 'sb-cga:matrix ...)? 2015-03-08T04:51:14Z axion: that works, but quite an ugly work around 2015-03-08T04:51:48Z Bike: it's not really a workaround, you got taht recursive error depth thing because you weren't using the actual matrix type. 2015-03-08T04:52:34Z axion: well... 2015-03-08T04:53:02Z axion: my matrix library is a separate library that doesnt pull in sb-0cga. my toplevel system pulls that in and clobbers the global dispatch table 2015-03-08T04:53:15Z axion: so putting sb-cga in my matrix system is not a solution 2015-03-08T04:53:22Z axion: it might not even be used with it 2015-03-08T04:53:25Z Bike: ok, well the other thing i'd do is have your matrix have higher priority. 2015-03-08T04:53:55Z axion: how so? 2015-03-08T04:54:18Z Bike: (set-pprint-dispatch '(simple-array single-float (16)) 'axion:mat-printer 1) 2015-03-08T04:54:44Z Bike: cga's printer is priority zero, so yours should take over. 2015-03-08T04:56:10Z axion: oh that is nice 2015-03-08T04:56:13Z axion: thank you :) 2015-03-08T04:56:16Z axion: works 2015-03-08T04:57:18Z Bike: oh, good, it doesn't happen outside of slime, so it's something in slime's print settings 2015-03-08T04:57:35Z axion: the recursion crash? 2015-03-08T04:57:35Z drmeister: Ok - I see why I get no error message - fixed and rerunning. However I can compile the Module with LLVM's "llc" compiler - weird. 2015-03-08T04:57:40Z Bike: yes 2015-03-08T04:57:45Z axion: aha 2015-03-08T04:58:00Z Bike: recursive errors are usually printing errors, so it's not a big suprise, but god it's annoying 2015-03-08T04:58:24Z axion: this one problem had me away from real code for a full day 2015-03-08T04:58:27Z Bike: sorry i didn't suggest priority earlier, i thought you said you'd tried it already. 2015-03-08T04:58:37Z axion: i shouldve came here a long time ago. thansk so much 2015-03-08T05:01:19Z Bike: Yo beach! Time for an anal standards question. Is modifying printer variables within with-standard-io-syntax supposed to work? 2015-03-08T05:02:56Z Bike: hm, i may have asked too soon 2015-03-08T05:03:29Z cluck quit (Remote host closed the connection) 2015-03-08T05:04:00Z |3b|: you aren't allowed to modify the readtable or pprint-dispatch table it binds 2015-03-08T05:04:44Z Bike: does that mean the initial pprint-dispatch has to not be the standard table? 2015-03-08T05:05:09Z |3b|: right, see glossary entry for standard pprint dispatch table 2015-03-08T05:06:39Z Bike: okay, where does inferior lisp put backtraces? 2015-03-08T05:08:52Z Bike: i can't even see the damned error. 2015-03-08T05:09:59Z |3b|: if you are looking at that pprint error, *debugger-hook* and with-standard-io-syntax can be helpful for that sort of thing 2015-03-08T05:10:43Z |3b|: when pprint function fails, the object it was trying to print is usually in the backtrace, making it fail again when it prints that 2015-03-08T05:11:29Z Bike: right. one problem is that i can't set the table in w-s-i-s, but let me try... 2015-03-08T05:12:01Z |3b|: why do you want to set it? 2015-03-08T05:12:10Z Bike: because that's what causes the error? 2015-03-08T05:12:21Z |3b|: right, but why set it in w-s-i-s? 2015-03-08T05:12:23Z Bike: actually the thing i'm blanking on is why (ignore-errors (set-pprint-dispatch ...)) still breaks, since there shouldn't be a backtrace 2015-03-08T05:12:53Z |3b|: it returns the error which might include the object in its printed representation 2015-03-08T05:13:12Z Bike: even (values (ignore-errors (set-pprint-dispatch ...))) 2015-03-08T05:13:22Z Bike: which ought to be just nil. 2015-03-08T05:14:10Z |3b| was saying to put w-s-i-s around the call to the debugger though 2015-03-08T05:14:28Z |3b|: so you have the broken dispatch table bound outside than and rebind it before calling debugger 2015-03-08T05:14:31Z Bike: right, right. i've never used debugger-hook before. 2015-03-08T05:14:43Z |3b|: https://github.com/3b/3bgl-shader/blob/master/printer.lisp#L596 2015-03-08T05:15:29Z |3b|: save old value, bind to a function that fixes printer and calls old value 2015-03-08T05:16:25Z boogie quit (Quit: Leaving...) 2015-03-08T05:16:38Z Petit_Dejeuner joined #lisp 2015-03-08T05:17:04Z Bike: (let* ((d *debugger-hook*) (*debugger-hook* (lambda ...))) (set-pprint-dispatch ...)) still fails... spooky error 2015-03-08T05:17:30Z Bike: i mean i would have thought that even the ginore errors thing would just avoid printing anything, but apparently not? 2015-03-08T05:17:48Z |3b|: what is your full form? 2015-03-08T05:17:53Z tooner quit (Remote host closed the connection) 2015-03-08T05:18:02Z beach: Bike: No idea. :) 2015-03-08T05:19:14Z Bike: (set-pprint-dispatch 'foo 'bar), (values (ignore-errors (set-pprint-dispatch 'foo 'bar))), (let* ((d *debugger-hook*) (*debugger-hook* (lambda (&rest r) (with-standard-io-syntax (apply d r))))) (set-pprint-dispatch 'foo 'bar)) 2015-03-08T05:19:55Z drmeister: Ok - I got the error message - it's a pretty standard one - 2015-03-08T05:19:58Z drmeister: https://www.irccloud.com/pastebin/YdAfvN20 2015-03-08T05:20:46Z drmeister: It means I'm either using a variable %V2, %V1 in a function where I haven't declared it, or I declare it in a basic block that doesn't necessarily precede its use. 2015-03-08T05:20:55Z bgs100 quit (Quit: bgs100) 2015-03-08T05:21:09Z beach: Yes, something like that. 2015-03-08T05:21:54Z drmeister: Since this Module contains 188 declarations of %V1 in different functions I need to get a little more info. So I'll give it a unique name like V34234 using (string (gensym "V")) 2015-03-08T05:22:10Z Bike: |3b|: gonna have to remember that for printing errors that aren't hellbeasts, though. 2015-03-08T05:23:13Z beach: drmeister: It might not be the declaration of the variable, but just that the ALLOCA has not been executed in some branch where it is assumed to have been. 2015-03-08T05:23:48Z drmeister: I make sure that all ALLOCAs are in the :entry basic block so they have to dominate all uses. 2015-03-08T05:23:58Z beach: Oh, OK. 2015-03-08T05:25:14Z drmeister: So I'm guessing that failed for some reason. Or there is a corner case where I ALLOCA the variable and then start generating another function that tries to use it. Making the names unique will quickly point me to the problem. 2015-03-08T05:29:00Z drmeister: ALLOCAs are all supposed to be in the :entry basic block - but LLVM doesn't flag it as an error if they are not. 2015-03-08T05:29:00Z |3b|: Bike: i think having dispatch on a bad type breaks printing everything 2015-03-08T05:29:41Z ajtulloch joined #lisp 2015-03-08T05:30:42Z Bike: even with nil print pretty? 2015-03-08T05:31:18Z |3b|: ok, maybe not 'everything', but everything with pretty set 2015-03-08T05:31:51Z Bike: binding pretty to nil in the debugger doesn't seem to help. 2015-03-08T05:32:20Z Bike: i mean, again, i don't see how a form like (ignore-errors (set-pprint-dispatch 'foo 'bar)) could print anything but nil, unless there's some kind of internal print to string going on? 2015-03-08T05:32:25Z jlongster quit (Ping timeout: 256 seconds) 2015-03-08T05:33:04Z drmeister: Ok, now we are cooking with gas: 2015-03-08T05:33:04Z |3b|: set-pprint-dispatch isn't erroring 2015-03-08T05:33:12Z drmeister: https://www.irccloud.com/pastebin/VjnmfkIy 2015-03-08T05:33:41Z drmeister: Just waiting for the entire Module to dump into the emacs buffer. 2015-03-08T05:33:41Z Bike: so... what is, exactly? printing nil? 2015-03-08T05:33:47Z |3b|: probably 2015-03-08T05:34:29Z Bike: i'm just going to file a bug and stop thinking about this. 2015-03-08T05:35:17Z Vutral quit (Ping timeout: 245 seconds) 2015-03-08T05:35:32Z mvilleneuve quit (Quit: This computer has gone to sleep) 2015-03-08T05:36:35Z |3b|: yeah, if you set it back to nil or only change it in a copy of the dispatch table it doesn't break 2015-03-08T05:37:36Z Bike: oh, finally something. okay, so it's the type checker function that's breaking, that's not too surprising. 2015-03-08T05:38:06Z sdothum quit (Quit: ZNC - 1.6.0 - http://znc.in) 2015-03-08T05:39:27Z drmeister: beach - I have a use of values-location outside of the function that it was ALLOCA'd in. I'm going to have some trouble generating HIR for these functions to determine what is going wrong because they are huge. 2015-03-08T05:40:03Z beach: drmeister: I know the problem. 2015-03-08T05:40:03Z |3b|: not sure why i can't get it to error when setting it locally or unsetting it after printing something though 2015-03-08T05:40:19Z drmeister: Do you have any recommendations? We saw this before when UNWIND-INSTRUCTIONs were writing values into variables that were declared in other functions. 2015-03-08T05:40:24Z drmeister: You do? 2015-03-08T05:40:25Z beach: drmeister: I wonder whether it has to do with unwinds. 2015-03-08T05:40:28Z innertracks joined #lisp 2015-03-08T05:40:58Z drmeister: That's my guess. 2015-03-08T05:41:42Z beach: They are special because you store the mulitple values in one function and you use them from a different one. 2015-03-08T05:42:03Z drmeister: But I'm scratching my head regarding how to verify it. I might be able to put some EVAL-WHEN's in there that cause HIR graphs to be generated for all following top level forms. Rendering them will be a b*tch. 2015-03-08T05:42:09Z beach: Maybe you can construct a small test for that case. 2015-03-08T05:42:38Z drmeister: Or maybe not - I could render them as EPS files and bring them up in Adobe Illustrator. Is there any other way to look at huge graphs? 2015-03-08T05:42:45Z drmeister: What would it look like? 2015-03-08T05:43:05Z Bike: oh, nice, so if you set print-pretty to nil and set-pprint-dispatch there's no issue, but then if you set it to t ever again it breaks. nice, nice. 2015-03-08T05:43:19Z beach: drmeister: Something with return-from 2015-03-08T05:43:46Z drmeister: A return-from that returns (values 1 2 3 4)? 2015-03-08T05:43:53Z beach: drmeister: (block hello (ff (lambda (x) (return-from hello (gg x))))) 2015-03-08T05:44:10Z pacon quit (Quit: Leaving) 2015-03-08T05:44:20Z beach: Maybe something that returns an unknown number of values, like my call to GG. 2015-03-08T05:44:40Z drmeister: Checking. 2015-03-08T05:45:43Z drmeister: So: (cleavir-compile 'mv0 '(lambda () (block hello (ff (lambda (x) (return-from hello (gg x))))))) 2015-03-08T05:46:04Z beach: Something like that is worth trying yes. 2015-03-08T05:46:31Z beach: Because then the return values from GG should be multiple values, and they have to be preserved around an unwind. 2015-03-08T05:46:57Z drmeister: Yup 2015-03-08T05:47:18Z oldk joined #lisp 2015-03-08T05:47:31Z drmeister: http://imgur.com/qUoczqF 2015-03-08T05:47:39Z drmeister: Can you fix it? 2015-03-08T05:48:07Z beach: What is wrong with it? 2015-03-08T05:48:34Z Bike: |3b|: this still happens in 1.2.9, right? 2015-03-08T05:49:08Z drmeister: beach: The V at the bottom is the output of two different funcalls in two different functions. 2015-03-08T05:49:24Z beach: Why is that wrong? 2015-03-08T05:50:47Z |3b|: Bike: not sure, i'm on 1.2.8.84, so probably 2015-03-08T05:51:05Z Bike: good enough. it's not like pprint is touched much, anyway.\ 2015-03-08T05:51:16Z drmeister: That bottom V has to be ALLOCAd in one stack frame or another. Both functions try to access it. LLVM doesn't let you access variables from one function ALLOCAd in another function. 2015-03-08T05:51:30Z Quadrescence joined #lisp 2015-03-08T05:51:59Z Bike: axion, |3b|: https://bugs.launchpad.net/sbcl/+bug/1429520 2015-03-08T05:52:01Z ajtulloch quit (Ping timeout: 252 seconds) 2015-03-08T05:52:01Z drmeister: Remember - we ran into this before - you fixed it somehow using cells. I didn't look too closely at your solution. 2015-03-08T05:52:17Z Bike: i'm curious if throwing an ignore-errors or the like into pprint-dispatch would be considered a solution. 2015-03-08T05:52:31Z drmeister: beach: We saw this not with values-locations but with single values. 2015-03-08T05:52:42Z beach: drmeister: Well, by definition, sometimes a multiple value like that must be written from one function and read from another. 2015-03-08T05:53:14Z beach: drmeister: The fact that it is written, then there is an UNWIND then it is read means that it is in two different functions. 2015-03-08T05:54:12Z Bike: hm, if i set print-pretty to nil, fuck up the table, and then use pprint-dispatch the error is still unprintable. i guess the slime debugger keeps prettiness on, huh. 2015-03-08T05:54:20Z drmeister: This looks exactly like the problem we ran into about a week ago - just this time with values-location. Is it not? 2015-03-08T05:54:43Z beach: drmeister: No, they are quite different. 2015-03-08T05:54:58Z yaewa joined #lisp 2015-03-08T05:55:21Z beach: drmeister: The other one was a bug in that I incorrectly thought that all temporaries are dynamic, but they aren't. 2015-03-08T05:55:53Z beach: drmeister: I have no "cell" where I can put mulitple values for you. 2015-03-08T05:56:19Z drmeister: In principle though multiple values can all be in registers - can they not? 2015-03-08T05:56:37Z adlai: when clhs says "If slot-unbound returns, only the primary value will be used by the caller" is it specifically saying that the primary value will be returned by slot-value ? 2015-03-08T05:56:38Z moei quit (Ping timeout: 256 seconds) 2015-03-08T05:56:51Z beach: drmeister: If you have an unbounded number of registers, sure. 2015-03-08T05:57:43Z Bike: adlai: yeah. 2015-03-08T05:58:17Z drmeister: I'm not sure if this is a useful train of thought but then how would that bottom "V" work in that case? 2015-03-08T05:59:27Z drmeister: Basically though LLVM will not allow me to use a variable in function X that is ALLOCAd in function Y. 2015-03-08T05:59:35Z Bahman joined #lisp 2015-03-08T05:59:39Z adlai: Bike: would it be terrible to turn this into a lazy slot computation mechanism? eg for a printed representation which is only relevant when inspecting an object interactively, but is currently computed for many objects which never need to be inspected during their lifetime 2015-03-08T05:59:41Z drmeister: Unless I pass a pointer to that variable to function X 2015-03-08T06:00:03Z beach: drmeister: I haven't given it much thought. I am thinking maybe the outer function allocates space for it and passes a pointer to that space to the inner function. 2015-03-08T06:00:24Z drmeister: Or somehow return a pointer from Y to X 2015-03-08T06:00:48Z beach: No I don't think so. 2015-03-08T06:00:52Z Bike: adlai: i would rate it as mildly terrible. like, hitting the "close door" button in the elevator before someone with a cane can get in bad, not hitler bad. 2015-03-08T06:01:01Z beach: drmeister: Because that space is used locally in the outer function as well. 2015-03-08T06:01:20Z Bike: i mean, that's pretty much what it's for, so you might as well give it a shot. 2015-03-08T06:01:42Z adlai can live with this, those buttons never work anyway 2015-03-08T06:01:50Z LiamH quit (Ping timeout: 272 seconds) 2015-03-08T06:01:50Z beach: drmeister: The problem, though, is that the outer function does not know how much space to allocate. 2015-03-08T06:02:30Z beach: drmeister: ... unless you use the freedom that the Common Lisp HyperSpec gives you and decide on a maximum number of return values. 2015-03-08T06:02:33Z drmeister: Well, I can make that easier on you - my multiple-values arrays are of fixed size. There is a limit to the number of multiple values I can return. 2015-03-08T06:02:45Z beach: OK. 2015-03-08T06:02:58Z drmeister: Hang on though - I have a different suggestion - let me just check something. 2015-03-08T06:04:07Z drmeister: Actually, this might be simple - but then again I may be doing something wrong. 2015-03-08T06:04:19Z drmeister: In the Clasp compiler I handle this the following way. 2015-03-08T06:05:49Z drmeister: In the inner function I write the multiple return values into the thread-local multiple-values array - then I throw a ReturnFrom exception. The landing pad in the outer function catches the exception and if it is the intended unwind target it pulls the result out of the thread-local multiple-values array. 2015-03-08T06:06:20Z drmeister: I'd have to add a second catch clause to my landing pads for ReturnFrom - that's no big deal. 2015-03-08T06:06:47Z drmeister: I was wondering how I was getting away with just catching Go. 2015-03-08T06:06:53Z beach: Can you distinguish different blocks that way? 2015-03-08T06:07:48Z drmeister: Yes, the ReturnFrom exception contains a unique integer that the BLOCK catch clause checks for. If it's not the intended unwind destination then it rethrows. 2015-03-08T06:07:55Z beach: OK. 2015-03-08T06:08:00Z drmeister: Now - will this work? 2015-03-08T06:08:29Z drmeister: Since it's using the thread-local multiple-values array - is there any way that could cause problems? 2015-03-08T06:08:39Z beach: I was thinking maybe you are right after all, and that I need to introduce a "multple value cell" so that the pointer to the local region can be transmitted to the inner function. 2015-03-08T06:09:20Z beach: ... but that sounds very messy. 2015-03-08T06:10:25Z jlongster joined #lisp 2015-03-08T06:10:26Z drmeister: Do you think a single thread-local multiple-value cell will do the job? I think of my thread-local multiple-value cell as a way of extending the number of registers I have - they are like register surrogates. 2015-03-08T06:10:28Z Jesin joined #lisp 2015-03-08T06:11:04Z beach: Maybe. 2015-03-08T06:12:18Z drmeister: I think what it means is if a funcall falls right before an unwind then it writes into the thread-local multiple-values array. It doesn't fit the HIR thought. It's feels wrong somehow. 2015-03-08T06:12:54Z beach: drmeister: I need to think about it. 2015-03-08T06:13:08Z beach: I can't come up with a solution in real time. 2015-03-08T06:14:56Z beach vanishes for a while. 2015-03-08T06:15:06Z jlongster quit (Ping timeout: 264 seconds) 2015-03-08T06:15:06Z Petit_Dejeuner quit (Ping timeout: 264 seconds) 2015-03-08T06:22:32Z Vivitron` quit (Remote host closed the connection) 2015-03-08T06:22:54Z qubitnerd quit (Ping timeout: 264 seconds) 2015-03-08T06:23:13Z troydm quit (Ping timeout: 264 seconds) 2015-03-08T06:31:30Z echo-area quit (Remote host closed the connection) 2015-03-08T06:32:07Z echo-area joined #lisp 2015-03-08T06:33:10Z troydm joined #lisp 2015-03-08T06:36:19Z beach: drmeister: Are you still awake? 2015-03-08T06:36:42Z drmeister: Yes - I'm putting together what I think is a pathological case that will break my suggestion. 2015-03-08T06:37:01Z beach: drmeister: As far as I can tell, there is only a single case where several active instances of VALUE-LOCATION. 2015-03-08T06:37:28Z beach: drmeister: And that is when we have a MULTIPLE-VALUE-CALL-INSTRUCTION with several FORMs. 2015-03-08T06:37:48Z drmeister: Like this? (multiple-value-call #'list (block foo (funcall (lambda () (return-from foo (values 1 2))))) (block bar (funcall (lambda () (return-from bar (values 3 4)))))) 2015-03-08T06:38:01Z beach: Exactly. 2015-03-08T06:38:04Z drmeister: Yup 2015-03-08T06:38:26Z theos quit (Disconnected by services) 2015-03-08T06:38:27Z beach: drmeister: MULTIPLE-VALUE-BIND and MULITPLE-VALUE-LIST create a single form for MULTIPLE-VALUE-CALL. 2015-03-08T06:38:54Z theos joined #lisp 2015-03-08T06:39:20Z beach: drmeister: So if we handle general uses of m-v-c as a function then there will be a single values-location active. 2015-03-08T06:40:28Z easye quit (Read error: Connection reset by peer) 2015-03-08T06:40:30Z drmeister: I don't quite follow the "general uses of m-v-c as a function" 2015-03-08T06:40:57Z drmeister: Could you provide an example? 2015-03-08T06:41:14Z beach: If we have a general use (more than one form) of MULITPLE-VALUE-CALL, we can handle it by calling a function as I have already suggested. 2015-03-08T06:42:11Z drmeister: (cleavir-compile 'mvpathological '(lambda () (multiple-value-call #'list (block foo (funcall (lambda () (return-from foo (values 1 2))))) (block bar (funcall (lambda () (return-from bar (values 3 4))))))) :debug t) 2015-03-08T06:42:15Z johann joined #lisp 2015-03-08T06:42:18Z beach: That function would have to be created in some special way, like in your case, compile it with your old compiler. 2015-03-08T06:42:45Z drmeister: Beautiful but deadly: http://imgur.com/PADpIC9 2015-03-08T06:43:19Z beach: Right. 2015-03-08T06:43:25Z hvxgr quit (Ping timeout: 244 seconds) 2015-03-08T06:43:32Z drmeister: The general use is where you pass the forms as lambda to a function? 2015-03-08T06:43:45Z beach: Yes. 2015-03-08T06:44:01Z drmeister: So then there is only one multiple-values active at a time. 2015-03-08T06:44:10Z beach: That is what I think, yes. 2015-03-08T06:44:26Z beach: ... and you can use a single per-thread store for it. 2015-03-08T06:44:49Z drmeister: So we can do away with "V" altogether? 2015-03-08T06:45:13Z beach: Well, it would mean that all occurrences refer to a single place. 2015-03-08T06:45:53Z drmeister: Ok, that's where I started. So we do it with macro and function magic. 2015-03-08T06:46:12Z drmeister: What are the downsides? 2015-03-08T06:46:47Z beach: An application that makes heavy use of m-v-c with more than one form will be a bit slower. 2015-03-08T06:47:09Z drmeister: Because... closures? 2015-03-08T06:47:30Z beach: closures, function calls, yeah. 2015-03-08T06:49:05Z beach: drmeister: My problem is that I have to make this work for implementations that might not have the same considerations. 2015-03-08T06:49:15Z innertracks quit (Quit: innertracks) 2015-03-08T06:49:37Z drmeister: Is this general enough for you - or are we going down the primrose path of serving implementation specific details. 2015-03-08T06:50:14Z beach: drmeister: I think it might be a kind of default option for implementations that don't want too much trouble. 2015-03-08T06:50:15Z drmeister: How were you going to handle V being the output of two instructions in different functions? 2015-03-08T06:51:03Z beach: drmeister: Since only one is active at a time, it doesn't matter. They will refer to the same location. 2015-03-08T06:51:14Z drmeister: Maybe I'm too ensconced in my LLVM box - but I don't see how you would implement it. 2015-03-08T06:51:30Z drmeister: No - I mean before we reached this realization. 2015-03-08T06:51:51Z beach: Me? For other implementations? 2015-03-08T06:52:05Z drmeister: Yeah. For a real X86 backend. 2015-03-08T06:52:16Z drmeister: For instance. 2015-03-08T06:52:21Z beach: I would probably use the same method. 2015-03-08T06:53:51Z beach: I will deal with different implementations when that day comes. 2015-03-08T06:54:01Z drmeister: I guess I'm interested in what other implementations would not have these considerations and how they would deal with this. 2015-03-08T06:54:32Z beach: You would have to ask implementers of those implementations. 2015-03-08T06:54:46Z beach: For SICL, I definitely think that the general case for m-v-c will be rare. 2015-03-08T06:55:04Z beach: ... so I have no problem using a function for that case. 2015-03-08T06:55:10Z drmeister: Because you could always pass a pointer to fixed size multiple-values arrays in the upper stack frames but then you have lots and lots of multiple-values arrays in your stack frames. 2015-03-08T06:55:15Z beach: I'll implement that function in assembler or whatever. 2015-03-08T06:55:36Z Mon_Ouie joined #lisp 2015-03-08T06:55:51Z beach: That would be doable, but messy. 2015-03-08T06:56:10Z Quadrescence: it would be interesting to do a study of say 100 CL codebases to determine what kinds of things are good to optimize 2015-03-08T06:56:14Z drmeister: Hmm, what should I implement mine in... maybe... C++! 2015-03-08T06:56:39Z beach: drmeister: Use Common Lisp and compile it with your existing compiler. 2015-03-08T06:57:08Z beach: ... unless you are planning to ditch your existing compiler of course. 2015-03-08T06:57:15Z drmeister: No, really - this will be easy in C++. 2015-03-08T06:58:35Z drmeister: So it's a function (multiple-value-fcall function-designator lambda1 lambda2 ... )? Evaluate lambda1, save the values, evaluate lambda 2, save the values and so on then call the function-designator with all of the values? 2015-03-08T06:58:43Z beach: drmeister: I think that, just as I will recommend that UNWIND-PROTECT etc be implemented as macros expanding to functions, I will make a similar recommendation about MULTIPLE-VALUE-CALL with more than one form. 2015-03-08T06:59:04Z beach: drmeister: Looks right. 2015-03-08T06:59:36Z drmeister: So with one form it's still an instruction? 2015-03-08T06:59:55Z drmeister: multiple-value-1call-instruction? 2015-03-08T06:59:56Z beach: I think so, yes. 2015-03-08T07:00:35Z drmeister: Ok, I've got it. I'll look forward to your changes and adjust my code accordingly. 2015-03-08T07:00:50Z beach: What changes do I have to make? 2015-03-08T07:01:38Z drmeister: Maybe MVC should flag an error if it has more than two inputs? 2015-03-08T07:01:50Z drmeister: That's weak - I get it. 2015-03-08T07:02:01Z beach: A bit, yes. 2015-03-08T07:02:56Z drmeister: Ok, so VALUES-LOCATION is now one thread-local multiple-values array. 2015-03-08T07:03:27Z beach: drmeister: Yes, I think we agreed on that. 2015-03-08T07:05:08Z beach: drmeister: I need a break. 2015-03-08T07:05:13Z drmeister: Yes, just being punctilious. 2015-03-08T07:05:48Z drmeister: No problem. I'll fire up the ol' fingers and get to work. 2015-03-08T07:06:31Z liqu0rice joined #lisp 2015-03-08T07:08:57Z drmeister: Also, there is no way to ditch my existing compiler (A) it is necessary to bootstrap from earth/air/fire/water (B) 90% of it is reused by the Cleavir/Clasp compiler. 2015-03-08T07:09:47Z drmeister: It is the Ying to Cleavir/Clasp's Yang. 2015-03-08T07:14:16Z hvxgr joined #lisp 2015-03-08T07:15:37Z drmeister: The key to a fast compiler is not how much code it generates but rather - how little. It requires a lot of code to generate the right small amount of code. 2015-03-08T07:16:15Z robot-beethoven joined #lisp 2015-03-08T07:16:16Z drmeister: In the future, sufficiently intelligent compilers will decide that all of our problems are worthless and compile our code to a single NOP statement. 2015-03-08T07:17:10Z drmeister: I for one - welcome our sufficiently intelligent compiler overlords. 2015-03-08T07:17:18Z drmeister: Because then I could stop working on this damn thing. 2015-03-08T07:18:26Z drmeister: Until then: tippity tappity tap tap tap. 2015-03-08T07:23:59Z johann quit (Remote host closed the connection) 2015-03-08T07:27:33Z beach: I think you have some typing to do for the foreseeable future. 2015-03-08T07:33:51Z eschatologist joined #lisp 2015-03-08T07:36:29Z {0}grant quit (Ping timeout: 245 seconds) 2015-03-08T07:37:34Z Quadrescence: beach, are you interested at all in thinking about APIs to allow the programmer to write compiler transformations? It would be interesting to know if it would be feasible to transform something like (REDUCE G (MAPCAR F X)) => (REDUCE G X :KEY F). 2015-03-08T07:38:02Z Quadrescence: beach, somewhat related question: can environments be extended to store additional information about, say, functions? 2015-03-08T07:38:43Z sunwukong joined #lisp 2015-03-08T07:40:24Z jrm: Shouldn't (format nil "~3f" *percent*)) print the number with a width of 3 with space padding on the left side? The number is being print left-aligned. 2015-03-08T07:40:55Z tcr joined #lisp 2015-03-08T07:42:12Z beach: Quadrescence: Let me think... 2015-03-08T07:42:45Z beach: I think the answer to the first question is definitely yes. I am thinking of doing that at the AST level. 2015-03-08T07:44:06Z Bike: jrm: (format nil "~3f" .6) => 0.6, what do you want exactly 2015-03-08T07:44:15Z beach: Quadrescence: For the second question, the answer is also definitely yes. The very purpose of defining a CLOS protocol for first-class global environments is so that they can be extended by client code. 2015-03-08T07:45:12Z sol__ joined #lisp 2015-03-08T07:45:24Z drmeister: There - I wrote multiple-value-funcall 2015-03-08T07:46:00Z beach: drmeister: Still awake? Amazing! 2015-03-08T07:46:22Z drmeister: Holy eff - it's 3:46 in the bloody am. 2015-03-08T07:46:26Z drmeister: How time flies. 2015-03-08T07:46:46Z beach: Oh, are you on daylight savings time already? 2015-03-08T07:46:46Z jrm: Bike: I didn't realize a variable had a string in it. (format nil "~3f" "68") puts a space on the right side. 2015-03-08T07:46:58Z BlueRavenGT quit (Ping timeout: 272 seconds) 2015-03-08T07:47:10Z jrm: was holding a string I mean 2015-03-08T07:47:13Z _5kg quit (Ping timeout: 264 seconds) 2015-03-08T07:47:39Z drmeister: Is it "Spring forward, fall back" or "Spring back, fall forward"? 2015-03-08T07:47:49Z Bike: ok, but what's your input and what do you want as output. 2015-03-08T07:47:53Z beach: drmeister: The former. 2015-03-08T07:48:10Z drmeister: Sh*t 2015-03-08T07:48:17Z beach: Oh, it just happened? 2015-03-08T07:49:01Z drmeister: It must have - we loose an hour today. I love that day in fall - it's like the one day when I can get everything done. 2015-03-08T07:49:09Z drmeister: I despise this day in spring. 2015-03-08T07:49:14Z jrm: Bike: Input in this case the input, I know realize, is a string of digits that might be of length 1 to 3. 2015-03-08T07:49:26Z jrm: Jesus I'm tired 2015-03-08T07:49:31Z drmeister: Oh well, I'm off to bed. 2015-03-08T07:49:52Z jrm: The input, I now realize, is... 2015-03-08T07:52:33Z drmeister: (core:multiple-value-funcall #'list (lambda () (block foo (funcall (lambda () (return-from foo (values 1 2)))))) (lambda () (block bar (funcall (lambda () (return-from bar (values 3 4))))))) --> (1 2 3 4) 2015-03-08T07:52:39Z drmeister: Toodles. 2015-03-08T07:53:07Z Bike: what the heck? 2015-03-08T07:53:18Z eschatologist quit (Quit: Textual IRC Client: www.textualapp.com) 2015-03-08T07:53:32Z Bike: like m-v-c but with a bunch of thunks? 2015-03-08T07:53:51Z beach: Bike: You must have missed the entire discussion. 2015-03-08T07:53:55Z Bike: i did. 2015-03-08T07:54:12Z ruste quit (Remote host closed the connection) 2015-03-08T07:54:16Z beach: Bike: Do I need to repeat it, or can you consult the logs? :) 2015-03-08T07:54:26Z Bike: yeah, i see. 2015-03-08T07:54:34Z Bike: that's just a lot of lambdas for m-v-c which is pretty simple. 2015-03-08T07:54:56Z ruste joined #lisp 2015-03-08T07:55:12Z Bike: well, no, why did he do all that weirdness instead of (m-v-f #'list (lambda () (values 1 2))) and such 2015-03-08T07:55:38Z beach: Bike: To summarize, I think the general case (more than one form) for m-v-c is better handled by a function. 2015-03-08T07:55:55Z sol__ quit (Ping timeout: 265 seconds) 2015-03-08T07:56:14Z beach: Bike: Then only a single occurrence of multiple values need be active at one time in HIR/MIR. 2015-03-08T07:56:19Z Bike: why two levels of indirection, though? 2015-03-08T07:56:39Z beach: Which one is the second? 2015-03-08T07:57:03Z Bike: like, (lambda () (block foo (funcall (lambda () (return-from foo (values 1 2)))))) instead of (lambda () (values 1 2)) 2015-03-08T07:57:28Z beach: That was a test case for HIR/MIR because it needs unwinding. 2015-03-08T07:57:44Z Bike: weird. well i'll stop bothering you about it sorry 2015-03-08T07:59:53Z beach: No need to be sorry. It will be obvious if you are interested enough to read the logs. 2015-03-08T08:04:05Z angavrilov joined #lisp 2015-03-08T08:06:06Z gravicappa joined #lisp 2015-03-08T08:06:44Z metaf5 quit (Ping timeout: 246 seconds) 2015-03-08T08:12:20Z vdamewood joined #lisp 2015-03-08T08:13:00Z zadock joined #lisp 2015-03-08T08:13:46Z cmbntr quit (Ping timeout: 255 seconds) 2015-03-08T08:13:50Z cmbntr_ joined #lisp 2015-03-08T08:14:15Z qubitnerd joined #lisp 2015-03-08T08:21:24Z leo2007 joined #lisp 2015-03-08T08:22:38Z mishoo joined #lisp 2015-03-08T08:23:24Z metaf5 joined #lisp 2015-03-08T08:25:19Z angavrilov quit (Ping timeout: 250 seconds) 2015-03-08T08:25:19Z resttime quit (Quit: resttime) 2015-03-08T08:25:27Z angavrilov joined #lisp 2015-03-08T08:26:03Z cmbntr_ quit (Quit: ZNC - http://znc.in) 2015-03-08T08:30:41Z _5kg joined #lisp 2015-03-08T08:32:41Z angavrilov quit (Ping timeout: 246 seconds) 2015-03-08T08:32:54Z angavrilov joined #lisp 2015-03-08T08:34:16Z Blaguvest joined #lisp 2015-03-08T08:35:24Z paroneay` joined #lisp 2015-03-08T08:36:25Z pt1 joined #lisp 2015-03-08T08:38:37Z paroneayea quit (Ping timeout: 245 seconds) 2015-03-08T08:39:02Z ben_vulpes: forgive the very novice CL question, but how do i splice lexically scoped variables into a literal list? 2015-03-08T08:39:29Z Xof: mostly, novices shouldn't do that 2015-03-08T08:39:44Z ben_vulpes: as in: (let ((a "FOO") (b "BAR")) '(a b)) => '("FOO" "BAR") 2015-03-08T08:39:45Z Xof: instead, they should construct a list using the LIST function 2015-03-08T08:40:00Z Quadrescence: ben_vulpes, maybe you want (list a b) instead of '(a b) 2015-03-08T08:40:16Z Xof: because literal lists are immutable, which means that bad things happen if you later modify them (which you might do by accident if you are a novice) 2015-03-08T08:40:19Z ben_vulpes: Xof, Quadrescence: thank you. any insight into why that's better? 2015-03-08T08:40:27Z Quadrescence: ben_vulpes, it's not better, it's just the right way 2015-03-08T08:40:43Z applicative-pyon is now known as generative-pyon 2015-03-08T08:40:49Z Quadrescence: ben_vulpes, you want to make a list containing values, not "splice variables into a literal" which doesn't really make sense 2015-03-08T08:40:56Z Quadrescence: it's not literal if the values haven't been specified yet, is it? 2015-03-08T08:40:58Z Quadrescence: ;) 2015-03-08T08:41:04Z ben_vulpes: :) 2015-03-08T08:41:11Z ben_vulpes: thanks :) 2015-03-08T08:42:05Z ben_vulpes: the compiler note makes vastly more sense now. 2015-03-08T08:43:25Z Quadrescence: ben_vulpes, I might advise that you forget ' or QUOTE exist for now. 2015-03-08T08:45:03Z brian_o quit (Quit: brian_o) 2015-03-08T08:46:54Z adlai: clhs 2.4.6 2015-03-08T08:46:54Z specbot: Backquote: http://www.lispworks.com/reference/HyperSpec/Body/02_df.htm 2015-03-08T08:48:35Z mrSpec joined #lisp 2015-03-08T08:51:18Z ovenpasta joined #lisp 2015-03-08T08:55:27Z attila_lendvai joined #lisp 2015-03-08T08:58:29Z hitecnologys_ is now known as hitecnologys 2015-03-08T08:58:45Z ehu joined #lisp 2015-03-08T09:00:53Z xificurC joined #lisp 2015-03-08T09:05:30Z mishoo quit (Ping timeout: 244 seconds) 2015-03-08T09:08:53Z ben_vulpes: i'll take the advice, ty all. 2015-03-08T09:11:59Z hitecnologys: I'm not sure I understand how LIST method combination works. I define generic function with :method-combination set to list and it doesn't seem to give any warning or whatever but when I evaluate (defmethod test list ((arg string)) ...) it gives me warning. If I remove list from method definition, it doesn't complain, but then I get error when I try calling method saying there are no methods available. 2015-03-08T09:12:11Z hitecnologys: The question is: what am I doing wrong? 2015-03-08T09:15:55Z k-stz joined #lisp 2015-03-08T09:16:21Z oldk quit (Ping timeout: 244 seconds) 2015-03-08T09:17:06Z pt1 quit (Remote host closed the connection) 2015-03-08T09:17:19Z ndrei quit (Ping timeout: 245 seconds) 2015-03-08T09:18:33Z keno joined #lisp 2015-03-08T09:19:08Z ndrei joined #lisp 2015-03-08T09:19:54Z vaporatorius joined #lisp 2015-03-08T09:23:35Z defaultxr quit (Quit: gnight) 2015-03-08T09:26:15Z angavrilov quit (Ping timeout: 246 seconds) 2015-03-08T09:27:23Z angavrilov joined #lisp 2015-03-08T09:31:40Z Petit_Dejeuner joined #lisp 2015-03-08T09:35:29Z Shinmera joined #lisp 2015-03-08T09:38:22Z Petit_Dejeuner quit (Ping timeout: 255 seconds) 2015-03-08T09:38:55Z pjb: hitecnologys: works for me: http://paste.lisp.org/+34RI 2015-03-08T09:38:57Z keno: Hello, I'm a CL noob and have a question. `cl+ssl` does not define method `stream-write-string` for the class `ssl-stream`, so I can't use functions like `format`. Acording to `farnz/imap`, however, it seems natual in Alleglo CL to use `format` for ssl stream. Could anyone give me a hint? 2015-03-08T09:39:17Z pjb: Add the method stream-write-string. 2015-03-08T09:39:39Z keno: pjb: the class `ssl-stream` is not exported. 2015-03-08T09:39:53Z hitecnologys: pjb: hmm, OK, thanks. 2015-03-08T09:40:15Z stepnem joined #lisp 2015-03-08T09:42:52Z pt1 joined #lisp 2015-03-08T09:43:19Z oleo__ joined #lisp 2015-03-08T09:44:51Z easye joined #lisp 2015-03-08T09:45:25Z oleo_ quit (Ping timeout: 264 seconds) 2015-03-08T09:47:42Z pjb: keno: this is irrelevant. 2015-03-08T09:47:45Z pt1 quit (Remote host closed the connection) 2015-03-08T09:51:49Z keno: pjb: what do you mean by the word "this"? 2015-03-08T09:53:09Z attila_lendvai quit (Ping timeout: 245 seconds) 2015-03-08T09:53:34Z pt1 joined #lisp 2015-03-08T09:53:50Z pjb: this = the class `ssl-stream` is not exported. 2015-03-08T09:54:35Z qubitnerd quit (Ping timeout: 244 seconds) 2015-03-08T09:56:11Z pt1 quit (Remote host closed the connection) 2015-03-08T09:57:51Z cadadar joined #lisp 2015-03-08T09:58:37Z stardiviner quit (Ping timeout: 255 seconds) 2015-03-08T10:00:36Z zeitue quit (Ping timeout: 272 seconds) 2015-03-08T10:01:18Z _5kg quit (Ping timeout: 264 seconds) 2015-03-08T10:02:50Z selat joined #lisp 2015-03-08T10:12:35Z zeitue joined #lisp 2015-03-08T10:13:08Z keno: pjb: Then, how can we define that method? It causes an error: `(defmethod stream-write-string ((stream cl+ssl:ssl-stream) ...` 2015-03-08T10:13:41Z Pastaf quit (Remote host closed the connection) 2015-03-08T10:14:08Z beach: keno: What's the error? 2015-03-08T10:15:28Z keno: beach: something like that: "read-error: READ error during COMPILE-FILE: The symbol "SSL-STREAM" is not external in the CL+SSL package." 2015-03-08T10:15:48Z zadock quit (Ping timeout: 272 seconds) 2015-03-08T10:15:50Z pjb: keno: (defmethod stream-write-string ((stream cl+ssl::ssl-stream) ...) ...) 2015-03-08T10:16:03Z beach: keno: Well, then the author of that package probably didn't mean for you to define a method. 2015-03-08T10:16:15Z Amaan quit (Quit: Connection closed for inactivity) 2015-03-08T10:16:38Z keno: pjb: it works! Thanks. 2015-03-08T10:16:56Z pjb: But this is not java, therefore you're free to define it even if the author didn't think it was possible or expected. 2015-03-08T10:18:30Z beach: keno: Expect trouble though. If the author didn't mean for you to have access to that symbol, you might be violating some assumptions. And don't be surprised if your code breaks in the future when the author changes the name or some something else that will make your method not work. 2015-03-08T10:18:53Z Patzy quit (Ping timeout: 240 seconds) 2015-03-08T10:19:50Z Patzy joined #lisp 2015-03-08T10:21:15Z Davidbrcz joined #lisp 2015-03-08T10:22:19Z zeitue quit (Ping timeout: 250 seconds) 2015-03-08T10:28:41Z keno: pjb, beach: Yes, I know that. Seeing drakma, it comes into my mind that it is better to use flexi-streams. Actually `cl+ssl:make-ssl-client-stream` provides the keyword :external-format, but I didn't notice this helps me because I didn't know what flexi-streams is. Now I can talk with server. Thanks again. 2015-03-08T10:28:42Z keno: 2015-03-08T10:29:09Z netABCs quit (Quit: Leaving) 2015-03-08T10:29:22Z k-stz: I experience incremental programming with cl to be an underrepresented feature, is there some nice reading material available online, specifically for cl. 2015-03-08T10:29:56Z k-stz: With this I mean the runtime compilation, live editing and swanks compiler api access (?) etc. 2015-03-08T10:30:17Z beach: k-stz: "underrepresented" how? We all use it. 2015-03-08T10:30:55Z k-stz: beach: I gradually realized its even a thing and I can't google it properly. I personally mean that I'd like to understand how it works, but I cant find explanations for it 2015-03-08T10:32:14Z beach: k-stz: I think that might be one of those instances of "expert knowledge" that you can't easily put in words or google for. 2015-03-08T10:32:40Z k-stz: beach: how about reading swanks code? 2015-03-08T10:33:21Z k-stz: ah, that's discouraging 2015-03-08T10:33:21Z kcj quit (Read error: Connection reset by peer) 2015-03-08T10:33:26Z beach: k-stz: I guess I don't understand what you want to accomplish. 2015-03-08T10:33:44Z beach: k-stz: If you want to know how to do that yourself, only practice will work. 2015-03-08T10:34:14Z beach: k-stz: The technical description of it is simple. 2015-03-08T10:34:26Z k-stz: beach: please go ahead and point me to one 2015-03-08T10:34:53Z beach: k-stz: Common Lisp semantics is defined by a sequence of interactions, gradually modifying or adding to the default runtime system. That's all there is to it. 2015-03-08T10:36:24Z beach: k-stz: Or maybe you want to know how that is implemented? 2015-03-08T10:36:39Z beach: k-stz: If so, I recommend the book "Lisp in Small Pieces". 2015-03-08T10:37:45Z k-stz: beach: I'd like to have a simple model in my mind that is not too far off the real thing. As things are now I imagine there is a loop and in its body it jumps to certain code, which is in the lisp image. This code I can change as the loop runs, so the loop finds the changed code on its next iteration. 2015-03-08T10:38:10Z k-stz: beach: ok, thanks 2015-03-08T10:38:46Z beach: Right. The loop is called the REPL for Read-Eval-Print Loop. 2015-03-08T10:39:18Z k-stz: that made me laugh 2015-03-08T10:39:32Z beach: Because it reads an expression (and turns it into a data structure). Then it evaluates that expression (which may have side effects such as modifying values and defining functions), and finally the value is printed. 2015-03-08T10:39:33Z zeitue joined #lisp 2015-03-08T10:40:15Z Quadrescence: beach, will you add an image recovery feature to SICL/CLEAVIR so I can repair when I do (set-syntax-from-char #\( #\)) 2015-03-08T10:41:11Z beach: Quadrescence: In SICL I don't know, but when I turn it into a multi-user environment certainly. How will you invoke that feature, though? :) 2015-03-08T10:41:17Z zadock joined #lisp 2015-03-08T10:41:22Z xificurC quit (Ping timeout: 240 seconds) 2015-03-08T10:41:31Z Quadrescence: beach, That's the problem to be solved! 2015-03-08T10:41:35Z stardiviner joined #lisp 2015-03-08T10:41:59Z Quadrescence: up up down down left right left right B A? 2015-03-08T10:42:24Z beach: So it's a GUI problem. 2015-03-08T10:42:52Z Quadrescence: Not if you make special #\Up #\Down #\Left #\Right characters! 2015-03-08T10:42:59Z beach: Oh, I know: C-M-DEL. 2015-03-08T10:43:56Z Quadrescence: beach, I wonder what a suite of "recovery commands" might look like. 2015-03-08T10:44:14Z beach: Quadrescence: Too much for my little brain. 2015-03-08T10:44:54Z Quadrescence: beach, one simple answer for the read table issue: when some syntax error occurs, have a restart to reset the syntax 2015-03-08T10:45:14Z beach: Not bad. 2015-03-08T10:45:16Z beach: I like it. 2015-03-08T10:45:30Z Quadrescence: (Sorry, I'm using some terms a little bit sloppily, but I am sure you understand.) 2015-03-08T10:45:31Z _5kg joined #lisp 2015-03-08T10:45:46Z beach: Yes, I understand. 2015-03-08T10:46:06Z beach: k-stz: The difficult part of the REPL is the EVAL part. You can think of EVAL as an expression interpreter, though it is typically implemented as compile+execute. In order to understand EVAL, you need to understand about compilation and interpretation. 2015-03-08T10:46:39Z keen__________82 joined #lisp 2015-03-08T10:46:46Z Davidbrcz quit (Ping timeout: 244 seconds) 2015-03-08T10:48:03Z beach: k-stz: http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop 2015-03-08T10:48:06Z keen__________81 quit (Ping timeout: 264 seconds) 2015-03-08T10:48:25Z beach: k-stz: Common knowledge as you can see. 2015-03-08T10:48:41Z k-stz: ok 2015-03-08T10:49:14Z beach: There is even a page for EVAL: http://en.wikipedia.org/wiki/Eval 2015-03-08T10:51:55Z k-stz: eval is just the interpreter i thought, where: interpreter = simple translation, compilation = get the whole AST and can make more efficient translation 2015-03-08T10:52:16Z pt1 joined #lisp 2015-03-08T10:52:53Z Quadrescence: EVAL can be implemented in whatever way 2015-03-08T10:52:58Z beach: k-stz: Whether EVAL is implemented as an interpreter or as a compiler is just, well, an implementation strategy. The end effect is the same, modulo performance. 2015-03-08T10:54:19Z beach: k-stz: In most modern Common Lisp implementations, EVAL compiles the expression to native code. Some implementations have both an interpreter and a compiler, using (say) the interpreter for interactive EVAL use so as to get faster response time (but slower execution speed). 2015-03-08T10:54:48Z arenz joined #lisp 2015-03-08T10:56:03Z beach: k-stz: Typically, the implementer argues that, in order to get reasonable speed, a native compiler is needed anyway, and so it would be more work to also write an interpreter. 2015-03-08T10:56:51Z k-stz: getting back to the incremental development the following still holds true: we have the lisp image (global state machine), which we can modify as the program runs. The program reacts differently by reading this state machine. And that's about it? 2015-03-08T10:57:33Z k-stz: beach: sounds like the interpreter is just a non-optimized compiler 2015-03-08T10:57:50Z beach: k-stz: That's basically what an interpreter is, yes. 2015-03-08T10:58:31Z beach: k-stz: In fact, there is a continuum from interpreting raw text, to compiling to data structure and interpreting the data structure, to generating native code which is interpreted by the hardware or by some virtual machine. 2015-03-08T10:59:33Z beach: While "state machine" is technically true, it might give the wrong association. Think of a Common Lisp image as a complicated data structure containing objects, some of which are functions, and EVAL as a function that may modify that data structure as a result of evaluating expressions. 2015-03-08T11:03:43Z k-stz: beach: "interpreting the data structure, to generating native code" is this to stress that program is data and vice versa? as in some data structures can be directly executes, because they're both data and, well, code 2015-03-08T11:04:19Z beach: Pretty much, yes. 2015-03-08T11:04:51Z k-stz: thanks for your time beach, I'll be tackling this again with the book you recommended 2015-03-08T11:05:09Z beach: k-stz: If "Lisp in Small Pieces" is too complicated for you (lots of emphasis on denotational semantics) you might enjoy John Allen's book "Anatomy of Lisp". 2015-03-08T11:05:22Z Blaguvest quit (Read error: Connection reset by peer) 2015-03-08T11:05:33Z Quadrescence quit (Quit: This computer has gone to sleep) 2015-03-08T11:05:50Z beach: It is a bit old, so it doesn't always correspond to how things are down now, but it gives you that model you are looking for. 2015-03-08T11:06:13Z beach: Start with Lisp in Small Pieces, and if it gets too theoretical, try Allen's book instead. 2015-03-08T11:07:35Z k-stz: ok thanks again :) 2015-03-08T11:08:40Z lonjil joined #lisp 2015-03-08T11:13:30Z Takumo joined #lisp 2015-03-08T11:13:30Z Takumo quit (Changing host) 2015-03-08T11:13:30Z Takumo joined #lisp 2015-03-08T11:15:16Z mishoo joined #lisp 2015-03-08T11:17:43Z robot-beethoven quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2015-03-08T11:20:09Z pt1 quit (Remote host closed the connection) 2015-03-08T11:21:22Z arenz quit (Ping timeout: 240 seconds) 2015-03-08T11:21:41Z vaporatorius quit (Quit: Leaving) 2015-03-08T11:27:15Z qubitnerd joined #lisp 2015-03-08T11:34:31Z smokeink quit (Ping timeout: 256 seconds) 2015-03-08T11:35:06Z hiroakip joined #lisp 2015-03-08T11:44:54Z fxer quit (Ping timeout: 250 seconds) 2015-03-08T11:48:07Z generative-pyon is now known as idem-pyon-tent 2015-03-08T11:57:22Z Beetny quit (Ping timeout: 245 seconds) 2015-03-08T12:00:14Z sol__ joined #lisp 2015-03-08T12:00:33Z gniourf quit (Remote host closed the connection) 2015-03-08T12:02:38Z gniourf joined #lisp 2015-03-08T12:03:13Z edgar-rft quit (Quit: edgar-rft) 2015-03-08T12:04:06Z pt1 joined #lisp 2015-03-08T12:04:38Z pt1 quit (Remote host closed the connection) 2015-03-08T12:11:54Z dfox quit (Ping timeout: 245 seconds) 2015-03-08T12:17:13Z Subfusc joined #lisp 2015-03-08T12:24:24Z dfox joined #lisp 2015-03-08T12:27:27Z manuel__ joined #lisp 2015-03-08T12:27:40Z manuel__ quit (Client Quit) 2015-03-08T12:28:19Z netABCs joined #lisp 2015-03-08T12:30:51Z Karl_Dscc joined #lisp 2015-03-08T12:33:05Z idem-pyon-tent quit (Quit: I'm sorry but... I don't have any interest in three-dimensional girls.) 2015-03-08T12:35:00Z pyon joined #lisp 2015-03-08T12:37:36Z rszeno joined #lisp 2015-03-08T12:43:01Z oleo__ quit (Ping timeout: 264 seconds) 2015-03-08T12:43:19Z pt1 joined #lisp 2015-03-08T12:44:18Z hitecnologys quit (Quit: hitecnologys) 2015-03-08T12:46:43Z pt1 quit (Remote host closed the connection) 2015-03-08T12:49:41Z hitecnologys joined #lisp 2015-03-08T12:51:16Z resttime joined #lisp 2015-03-08T12:51:36Z r_ joined #lisp 2015-03-08T12:52:33Z pjb: - 2015-03-08T12:53:08Z Patzy quit (Read error: Connection reset by peer) 2015-03-08T12:53:12Z vdamewood quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2015-03-08T12:54:49Z Patzy joined #lisp 2015-03-08T12:55:10Z leo2007 quit (Quit: happy hacking) 2015-03-08T12:55:14Z r_ quit (Remote host closed the connection) 2015-03-08T12:55:24Z netABCs quit (Ping timeout: 272 seconds) 2015-03-08T12:55:48Z r_ joined #lisp 2015-03-08T12:56:18Z scymtym joined #lisp 2015-03-08T12:56:30Z leo2007 joined #lisp 2015-03-08T12:57:00Z Davidbrcz joined #lisp 2015-03-08T13:00:55Z Patzy quit (Read error: Connection reset by peer) 2015-03-08T13:02:26Z Patzy joined #lisp 2015-03-08T13:03:00Z rszeno quit (Ping timeout: 272 seconds) 2015-03-08T13:03:46Z reader joined #lisp 2015-03-08T13:04:08Z jackdaniel: beach: did you get a memo? 2015-03-08T13:04:14Z reader: hi 2015-03-08T13:04:17Z jackdaniel: o/ 2015-03-08T13:05:01Z paroneay` quit (Read error: Connection reset by peer) 2015-03-08T13:05:39Z paroneay` joined #lisp 2015-03-08T13:06:33Z reader: I need to pass a variable to a function which I intend to re-assign, i.e. pass by reference, if the variable is global (defvar/defparameter), I could just pass its name and then assign to it via `symbol-value' 2015-03-08T13:07:03Z reader: but I'm wondering what about the ones defined in `let' 2015-03-08T13:07:13Z H4ns: why do you need to pass it as parameter if it is a global already? 2015-03-08T13:07:34Z H4ns: symbol-value does not apply to lexical variables. 2015-03-08T13:08:00Z reader: right, lexical variables. So, what's the way, or I'm doing something wrong here ? 2015-03-08T13:08:21Z Xach: reader: it can't be done with a function. 2015-03-08T13:08:25Z H4ns: there is no way to pass a variable by reference. 2015-03-08T13:08:48Z Xach: reader: sometimes macros satisfy that desire, but sometimes the best option is to change the desire 2015-03-08T13:09:44Z pyon quit (Quit: In and around the lake... Mountains come out of the sky and they stand there... Twenty-four before my love and I'll be there... ) 2015-03-08T13:10:18Z reader: so the callee function prepends an item to the list (the variable) 2015-03-08T13:10:30Z reader: passed as a parameter to the function 2015-03-08T13:10:58Z reader: i.e. (setf (cdr new-item) variable) 2015-03-08T13:10:59Z taylanub: maybe you just want to use a "box" (what does CL have for that? in worst case, a cons cell one of whose two slots is unused) 2015-03-08T13:11:09Z H4ns: reader: places may be what you want 2015-03-08T13:11:13Z ASau quit (Ping timeout: 264 seconds) 2015-03-08T13:11:20Z reader: looking 2015-03-08T13:12:03Z H4ns: reader: places are what setf operates upon, and you can define your own places. (defun (setf blah) ...) is often sufficient, and there is defsetf and define-setf-expander, too 2015-03-08T13:12:15Z smokeink joined #lisp 2015-03-08T13:12:36Z reader: hmm 2015-03-08T13:12:48Z reader: didn't know of those. 2015-03-08T13:12:54Z reader: thanks H4ns 2015-03-08T13:16:21Z ASau joined #lisp 2015-03-08T13:16:22Z alexherbo2 quit (Quit: WeeChat 1.1.1) 2015-03-08T13:16:57Z alexherbo2 joined #lisp 2015-03-08T13:17:06Z alexherbo2 quit (Client Quit) 2015-03-08T13:17:30Z alexherbo2 joined #lisp 2015-03-08T13:18:43Z ASau quit (Remote host closed the connection) 2015-03-08T13:19:10Z ASau joined #lisp 2015-03-08T13:20:51Z cadadar quit (Quit: Leaving.) 2015-03-08T13:22:51Z dagnachewa joined #lisp 2015-03-08T13:28:16Z mrkkrp joined #lisp 2015-03-08T13:30:47Z mrkkrp: Hi, is there some way to evaluate string like "(+ 1 1)" as if it were entered in SLIME REPL, from Emacs lisp? Not sure where to ask about it :) 2015-03-08T13:34:11Z jackdaniel: mrkkrp: not sure what do you mean, but M-: ? 2015-03-08T13:34:15Z reader: RE: (eval (read-from-string ...)) 2015-03-08T13:34:21Z ajtulloch joined #lisp 2015-03-08T13:34:24Z jackdaniel: or C-x C-e after sexp 2015-03-08T13:35:09Z ajtulloch quit (Remote host closed the connection) 2015-03-08T13:35:12Z mrkkrp: jackdaniel: I want to write a elisp function that will evaluate something in SLIME REPL saving me some typing. 2015-03-08T13:35:46Z mrkkrp: `slime-eval' is quite close 2015-03-08T13:36:02Z mrkkrp: ...but it takes sexp, not string 2015-03-08T13:37:07Z mrkkrp: I have to admit that I don't understand how to insert values of variables in such a sexp. Maybe I'm just too tired. 2015-03-08T13:37:53Z reader: (slime-eval (car (read-from-string STRING))) 2015-03-08T13:38:06Z jackdaniel: maybe C-u C-x C-e after writing call to this function? it will pass elisp evaluation result in slime repl 2015-03-08T13:38:25Z ggole: C-c : 2015-03-08T13:38:34Z mrkkrp: reader, jackdaniel: I will thy your suggestions. 2015-03-08T13:39:36Z jackdaniel: mrkkrp: C-u C-c : 2015-03-08T13:40:09Z jackdaniel feels like playing mortalcombat 2015-03-08T13:40:26Z mrkkrp: :) 2015-03-08T13:40:50Z thodg joined #lisp 2015-03-08T13:41:09Z Bahman quit (Quit: Ave atque vale) 2015-03-08T13:41:41Z zyaku joined #lisp 2015-03-08T13:42:07Z mvilleneuve joined #lisp 2015-03-08T13:45:00Z Davidbrcz_ joined #lisp 2015-03-08T13:45:11Z sdothum joined #lisp 2015-03-08T13:46:20Z mutley89 quit (Quit: Leaving) 2015-03-08T13:48:34Z edgar-rft joined #lisp 2015-03-08T13:49:36Z manuel__ joined #lisp 2015-03-08T13:52:05Z keno left #lisp 2015-03-08T13:54:10Z EvW joined #lisp 2015-03-08T13:56:00Z johann joined #lisp 2015-03-08T13:57:18Z pjb: Did you get THE memo? :-) 2015-03-08T13:58:06Z hitecnologys: H4ns: is there a way to make YASON encode keys in lower case? I didn't find anything in documentation and I setting *PRINT-CASE* doesn't seem to work either. 2015-03-08T13:58:16Z pjb: reader: have a look at: http://www.informatimago.com/articles/usenet.html#C-like-pointers-in-Lisp (it HAS to be done with functions!) 2015-03-08T14:01:12Z pjb: mrkkrp: the sexp has to be a little special for slime-eval. https://github.com/informatimago/emacs/blob/master/slime-rpc.el 2015-03-08T14:01:23Z mrkkrp: So, here it is: http://paste.lisp.org/display/146143, I bet I just don't understand what kind of argument `slime-eval' wants... 2015-03-08T14:01:47Z pjb: Then use my eval-in-cl. 2015-03-08T14:03:31Z LiamH joined #lisp 2015-03-08T14:03:34Z H4ns: hitecnologys: i'm not quite sure if i follow - yason does not even know how to encode symbols by default. 2015-03-08T14:03:41Z pjb: :-) 2015-03-08T14:04:27Z hitecnologys: H4ns: I'm doing (yason:encode-plist ...) and I get something like '{"FOO":"bar"}' but I'd want '{"foo":"bar"}' instead. 2015-03-08T14:05:13Z mrkkrp: pjb, thanks, anyway, where format of sexp is described? What should it be? 2015-03-08T14:05:42Z pjb: With eval-in-cl, it's obviously a CL sexp. 2015-03-08T14:05:48Z pjb: As you would type in a lisp buffer. 2015-03-08T14:05:55Z Petit_Dejeuner joined #lisp 2015-03-08T14:06:34Z H4ns: hitecnologys: unfortunately not - yason uses "~A:" as key formatter 2015-03-08T14:07:26Z hitecnologys: H4ns: I see. Thanks for information. 2015-03-08T14:07:42Z reader: pjb: thank you, although figuring out places atm. 2015-03-08T14:09:34Z d4ryus_ is now known as d4ryus 2015-03-08T14:10:48Z LiamH: ehu: Is my cl.net password supposed to work on the gitlab instance? 2015-03-08T14:11:09Z ehu: LiamH: Nope, unfortunately not. 2015-03-08T14:11:32Z ehu: although you have a great idea wrt initial passwords ! 2015-03-08T14:11:40Z LiamH: Is there a new password? 2015-03-08T14:11:42Z ehu: (I could use the Trac passwords as initial passwords) 2015-03-08T14:12:00Z ehu: LiamH: basically when you acknowledge your account, you choose a password. 2015-03-08T14:12:06Z LiamH: I haven't used Trac in years. 2015-03-08T14:12:32Z LiamH: Acknowledge my account? 2015-03-08T14:12:35Z ehu: yes. 2015-03-08T14:12:41Z ehu: you haven't received that mail yet. 2015-03-08T14:12:45Z LiamH: Ah. 2015-03-08T14:12:52Z ehu: https://common-lisp.net/news/#2015_03_08 2015-03-08T14:13:26Z ehu: I'm going to send a mail to the announcement mailing list regarding next steps (and apology for the confusing mails so far) 2015-03-08T14:13:33Z LiamH: I see, thanks. 2015-03-08T14:13:37Z Ethan- quit (Ping timeout: 252 seconds) 2015-03-08T14:14:42Z mrkkrp: pjb: it seems to work, because I see # in my minibuffer. However it doesn't affect SLIME REPL... 2015-03-08T14:15:41Z LiamH: ehu: I suppose things like deleting long-dead projects and merging two projects into the same group are things we can take care of later. 2015-03-08T14:16:22Z ehu: LiamH: sure. that would be my preference, since I have run a (largish) number of trial migrations using the current dataset. 2015-03-08T14:16:43Z ehu: changing that dataset seems like asking for trouble 2015-03-08T14:16:59Z LiamH: OK 2015-03-08T14:17:01Z ehu: but we can transfer projects/repositories from one group to another later 2015-03-08T14:17:07Z ehu: and delete the groups, etc. 2015-03-08T14:17:09Z ehu: np. 2015-03-08T14:17:23Z peterhil` joined #lisp 2015-03-08T14:18:02Z LiamH: I will wait. Thanks for the upgrade, I'm looking forward to trying gitlab. 2015-03-08T14:18:29Z ehu: LiamH: I can give you access to the testing system, if you want, but there are no imported repositories at this moment. 2015-03-08T14:18:42Z ehu: just users, groups and group members 2015-03-08T14:18:48Z cluck joined #lisp 2015-03-08T14:18:51Z LiamH: ehu: I'm not in any hurry, just curious. 2015-03-08T14:19:07Z peterhil quit (Ping timeout: 252 seconds) 2015-03-08T14:19:22Z ehu: it's not a lot of work, but if you can wait, it's all the same to me :-) 2015-03-08T14:19:47Z LiamH: Yes, I'll wait. 2015-03-08T14:21:10Z pjb: mrkkrp: in CL: (defvar *slime-output* *standard-output*) ; in emacs: (defun eval-in-cl (cl-expression-string) (slime-eval-with-transcript `(swank:eval-and-grab-output ,cl-expression-string))) (eval-in-cl "(let ((*standard-output* *slime-output*)) (print 'something))") 2015-03-08T14:21:10Z pjb: 2015-03-08T14:21:46Z pjb: mrkkrp: there seems to be some bit rot, at least with my slime version, slime-eval-with-transcript takes only one argument anymore. 2015-03-08T14:22:30Z pjb: From CL, you can always write on the slime stream, but you have to save it somewhere first, because swank only binds *standard-output* (et al), without providing it bound to some other special variable. 2015-03-08T14:23:45Z mvilleneuve quit (Quit: This computer has gone to sleep) 2015-03-08T14:25:24Z cadadar joined #lisp 2015-03-08T14:25:38Z hitecnologys: Is there anyone still using HCTSMSL? 2015-03-08T14:25:48Z pjb: Never knew what it is. 2015-03-08T14:26:06Z mrkkrp: pjb, I thought it was a bit simpler... How SLIME sends every line that I enter at REPL? I think it would be nice to use the same function and send some generated strings, that's all... 2015-03-08T14:26:07Z hitecnologys: pjb: that's an HTML/CSS compiler I wrote some time ago. 2015-03-08T14:26:26Z pjb: Sorry. 2015-03-08T14:26:45Z kami joined #lisp 2015-03-08T14:26:55Z pjb: I try to publicize my libraries here, but perhaps we should more systematically publicize them somewhere more visible? 2015-03-08T14:26:57Z kami: Hello 2015-03-08T14:27:02Z hitecnologys: I barely use it nowadays and hence considering marking it deprecated since I don't plan on updating it much in nearest future. 2015-03-08T14:27:12Z pjb: mrkkrp: it sends them with slime-eval. 2015-03-08T14:27:27Z pjb: mrkkrp: but the slime repl buffer is INPUT for that. 2015-03-08T14:27:52Z pjb: and the CL process sends back output thru *standard-output* which is bound to the slime stream. 2015-03-08T14:27:55Z hitecnologys: pjb: that's exactly what I've been telling for a long time too. But there's Clili. The problem is that not much people put their stuff there. 2015-03-08T14:28:09Z hitecnologys: s/Clili/Cliki/ 2015-03-08T14:28:49Z mrkkrp: pjb, so if I evaluate: (slime-eval '(+ 10 *my-var*)), *my-var* should be visible and defined at CL side, not in emacs lisp? 2015-03-08T14:28:50Z pjb: Yes. Perhaps we could update description pages for libraries automatically extracted from libraries docstrings. 2015-03-08T14:29:05Z pjb: mrkkrp: of course. 2015-03-08T14:29:41Z pjb: (slime-eval '(defvar *my-var* 42)) (slime-eval '(apropos "*MY-VAR*")) ; have fun. 2015-03-08T14:29:52Z hitecnologys: pjb: that sounds like a good idea, but who's going to implement it? 2015-03-08T14:30:09Z pjb: well there's quickdocs, but it can't parse my libraries :-( 2015-03-08T14:30:41Z kami: H4ns: did this ever work for you? https://github.com/hanshuebner/ans 2015-03-08T14:30:55Z hitecnologys: Quickdocs takes libraries from quicklisp. There are lots of libraries that are good but not in QL. 2015-03-08T14:31:21Z hitecnologys: Of course they should be, but sometimes they are WIP or cause name clashes. 2015-03-08T14:31:46Z mrkkrp: pjb, ok then, this must work: http://paste.lisp.org/display/146143 2015-03-08T14:34:54Z hitecnologys: Alright, if somebody still uses the HCTSMSL thing, you can email me and I'll hold it active for a while. After that, I'll put a warning in repository and forget about it. 2015-03-08T14:39:47Z zyaku quit (Ping timeout: 246 seconds) 2015-03-08T14:42:52Z admg joined #lisp 2015-03-08T14:43:58Z yorick quit (Remote host closed the connection) 2015-03-08T14:46:53Z oleo__ joined #lisp 2015-03-08T14:47:22Z oleo__ quit (Read error: Connection reset by peer) 2015-03-08T14:48:21Z pt1 joined #lisp 2015-03-08T14:48:44Z LiamH1 joined #lisp 2015-03-08T14:49:21Z oleo joined #lisp 2015-03-08T14:49:48Z pyon joined #lisp 2015-03-08T14:50:09Z Xach: hitecnologys: it is downloaded fewer than 10 times per month on average 2015-03-08T14:50:22Z Xach suspects completists 2015-03-08T14:51:40Z LiamH quit (Ping timeout: 244 seconds) 2015-03-08T14:51:47Z LiamH1 is now known as LiamH 2015-03-08T14:52:07Z zeitue quit (Ping timeout: 252 seconds) 2015-03-08T14:52:22Z hitecnologys: Xach: I see. Is it possible to get it removed from QL so that it won't confuse people? I'll put an issue on quicklisp-projects's tracker then in a week or so just in case there are people who need it. 2015-03-08T14:52:54Z hitecnologys: Xach: I don't think there's a point keeping upmaintained library there. 2015-03-08T14:53:17Z mrkkrp: pjb, nothing works. (slime-eval '(defvar *my-var* 42)), first CL says it doesn't know no DEFVAR. When I use cl:defvar, there is no error and no *MY-VAR* defined too. I have to give up on this hairy stuff. 2015-03-08T14:54:09Z Shinmera: slime-eval by default does not evaluate in CL-USER 2015-03-08T14:54:32Z mrkkrp: Shinmera: I tried (slime-eval "CL-USER") too 2015-03-08T14:55:15Z zyaku joined #lisp 2015-03-08T14:55:55Z x1n4u joined #lisp 2015-03-08T14:56:11Z a2015 joined #lisp 2015-03-08T14:56:25Z Shinmera: the second argument does not do what you think it does. 2015-03-08T14:56:59Z Xach: hitecnologys: yes, it is possible 2015-03-08T14:58:04Z hitecnologys: Xach: OK, thanks. 2015-03-08T15:00:55Z yorick_ joined #lisp 2015-03-08T15:01:00Z mrkkrp: Shinmera, "(slime-eval SEXP &optional PACKAGE) Evaluate EXPR on the superior Lisp and return the result." -- I have only this to guess what it does. Of course, PACKAGE maybe be something different from what its name suggests, who knows... 2015-03-08T15:01:29Z Shinmera: You don't have only that to guess what it does. You also have the stack trace and swank sources to look through. 2015-03-08T15:02:08Z ggole: mrkkrp: what are you trying to do, exactly? 2015-03-08T15:04:03Z mrkkrp: ggole: evaluate some stuff from Emacs lisp, as if it were entered at SLIME REPL. In particular, load ASDF system and switch to some package after that. But first, I would like to do simpler things now. Define variable *foo* for example. 2015-03-08T15:04:43Z zeitue joined #lisp 2015-03-08T15:04:51Z mrkkrp: Shinmera: stack trace is good, but I thought that I could just read description of the function and understand how to call it... 2015-03-08T15:04:59Z beach: jackdaniel: I got the memo. 2015-03-08T15:05:04Z beach: I'll be on it soon. 2015-03-08T15:06:12Z ggole: mrkkrp: look at the guts of C-c : 2015-03-08T15:08:22Z yorick_ is now known as yorick 2015-03-08T15:08:28Z ynniv joined #lisp 2015-03-08T15:09:55Z hiroakip quit (Remote host closed the connection) 2015-03-08T15:10:19Z alvis` joined #lisp 2015-03-08T15:10:35Z hiroakip joined #lisp 2015-03-08T15:12:20Z ynniv: usocket:socket-server takes a handler function as well as extra arguments for that function. At least in scheme it’s idiomatic that a thunk needing extra arguments would be lexically closed into a function taking only the handler input. Is there a reason why socket-server does this in what feels more like C style to me? 2015-03-08T15:12:31Z mrkkrp: ggole, OK, with (slime-eval-with-transcript `(swank:interactive-eval ,string)) the same problem: it prints result in minibuffer, but the command has no effect in SLIME REPL. 2015-03-08T15:14:04Z ggole: By no effect do you mean "not print anything", or "doesn't affect the lisp state"? 2015-03-08T15:14:09Z ggole: (It works fine here.) 2015-03-08T15:15:06Z mrkkrp: "doesn't affect the lisp state". I want to be able to switch active package, with `in-package'. 2015-03-08T15:16:19Z burtons quit (Ping timeout: 264 seconds) 2015-03-08T15:18:00Z k-stz quit (Remote host closed the connection) 2015-03-08T15:18:19Z ynniv quit (Quit: ynniv) 2015-03-08T15:19:45Z ynniv joined #lisp 2015-03-08T15:20:48Z ggole: Hmm, you might need to handle that specially 2015-03-08T15:20:51Z ggole: Other code should work fine 2015-03-08T15:22:34Z mrkkrp: ggole: thank you (and all others) for your help. I'm beginning to understand that this is not a trivial task. I think I should give up on this for now and do some useful things instead. 2015-03-08T15:26:51Z k-dawg quit (Quit: This computer has gone to sleep) 2015-03-08T15:26:54Z linux_dream joined #lisp 2015-03-08T15:28:12Z munksgaard quit (Ping timeout: 245 seconds) 2015-03-08T15:28:16Z d4ryus_ joined #lisp 2015-03-08T15:31:48Z d4ryus quit (Ping timeout: 256 seconds) 2015-03-08T15:31:55Z semtex-h joined #lisp 2015-03-08T15:33:36Z Harag joined #lisp 2015-03-08T15:35:04Z ynniv quit (Quit: ynniv) 2015-03-08T15:35:10Z radioninja quit (Ping timeout: 252 seconds) 2015-03-08T15:41:14Z gko__ joined #lisp 2015-03-08T15:44:29Z ASau` joined #lisp 2015-03-08T15:45:21Z pt1 quit (Remote host closed the connection) 2015-03-08T15:47:26Z zlrth joined #lisp 2015-03-08T15:47:41Z ASau quit (Ping timeout: 246 seconds) 2015-03-08T15:47:58Z ynniv joined #lisp 2015-03-08T15:52:23Z ASau` is now known as ASau 2015-03-08T15:56:03Z fxer joined #lisp 2015-03-08T15:57:41Z ynniv: mrkkrp: are you looking for (slime-repl-eval-string "(in-package :my-package)”)? 2015-03-08T15:57:48Z foom quit (Ping timeout: 265 seconds) 2015-03-08T15:57:54Z munksgaard joined #lisp 2015-03-08T15:58:06Z Harag quit (Remote host closed the connection) 2015-03-08T15:58:16Z Harag joined #lisp 2015-03-08T15:58:40Z gingerale joined #lisp 2015-03-08T15:59:44Z hitecnologys: Shinmera: is there any built-in way to produce CSS from LASS file without writing it back to filesystem? I.e. I want to do something like (setf *some-var* (compile-sheet-from-file #p"foo.lass")). Do I have to read it by my own and then APPLY to COMPILE-AND-WRITE? 2015-03-08T16:00:53Z kons quit (Remote host closed the connection) 2015-03-08T16:01:59Z Shinmera: hitecnologys: yes. 2015-03-08T16:02:27Z hitecnologys: Shinmera: got it, thanks for help. 2015-03-08T16:02:59Z Shinmera: I never thought of that use-case before, so 2015-03-08T16:03:34Z xyh joined #lisp 2015-03-08T16:03:47Z hitecnologys: Shinmera: I was also thinking about adding ASDF component for LASS so that I could isolate stylesheets from my code without writing any wrappers. Does that sound sane? 2015-03-08T16:04:12Z Shinmera: That sounds very sane and I should've thought of that before myself. 2015-03-08T16:04:26Z Shinmera: I'll add that right now, actually. 2015-03-08T16:04:44Z hitecnologys: There's cl-closure-templates by archimag which implement exactly that. 2015-03-08T16:04:48Z f-a joined #lisp 2015-03-08T16:04:58Z hitecnologys: This is actually where I've got idea from. 2015-03-08T16:05:24Z Shinmera: I usually think a lot about extending ASDF, but LASS was a really quick and dirty botch job to be honest. 2015-03-08T16:05:50Z Shinmera: So not much was considered while I worked on it 2015-03-08T16:06:05Z hitecnologys: Well, it's much better than mine really quick and dirty botch job. 2015-03-08T16:06:28Z hitecnologys: And when I may much, I mean *much*. 2015-03-08T16:06:53Z Longlius quit (Ping timeout: 240 seconds) 2015-03-08T16:07:04Z Shinmera: I should get back to it some day and implement all the missing special CSS functions and their semantics as well as some more support for browser-dependant properties. 2015-03-08T16:07:13Z Shinmera: But that's a lot of manual work. 2015-03-08T16:07:15Z hitecnologys: Argh, out of coffee. Be right back in a few minutes. 2015-03-08T16:10:19Z foom joined #lisp 2015-03-08T16:10:45Z drmeister: beach: should I change the name of my multiple-value-call special operator? I have to don't I if I am creating a macro with that name. 2015-03-08T16:10:53Z hitecnologys: Yeah, that's quite a lot of work. 2015-03-08T16:11:44Z drmeister: I guess the macro will count the number of forms and if it's 1 then use the special operator and if it's more then use the function. 2015-03-08T16:11:56Z hitecnologys: Shinmera: if any help is needed, I'm usually there, doing useless things so I think I could find time to serve greater good. 2015-03-08T16:12:54Z mozinrat joined #lisp 2015-03-08T16:13:49Z Shinmera: Nah, I got this. 2015-03-08T16:14:08Z manuel__ quit (Quit: manuel__) 2015-03-08T16:14:27Z hitecnologys: Roger. 2015-03-08T16:16:31Z manuel__ joined #lisp 2015-03-08T16:17:17Z ndrei quit (Ping timeout: 256 seconds) 2015-03-08T16:17:38Z smokeink quit (Remote host closed the connection) 2015-03-08T16:18:46Z manuel__ quit (Client Quit) 2015-03-08T16:18:57Z ndrei joined #lisp 2015-03-08T16:19:31Z radioninja joined #lisp 2015-03-08T16:22:19Z f-a quit (Read error: Connection reset by peer) 2015-03-08T16:23:23Z r__ joined #lisp 2015-03-08T16:23:42Z edgar-rft quit (Quit: edgar-rft) 2015-03-08T16:23:54Z pyon is now known as pleasant-pyon 2015-03-08T16:23:55Z f-a joined #lisp 2015-03-08T16:23:59Z alvis` quit (Ping timeout: 245 seconds) 2015-03-08T16:24:30Z hiroakip quit (Remote host closed the connection) 2015-03-08T16:25:00Z f-a quit (Client Quit) 2015-03-08T16:25:16Z f-a joined #lisp 2015-03-08T16:25:16Z f-a quit (Client Quit) 2015-03-08T16:25:30Z hiroakip joined #lisp 2015-03-08T16:26:14Z burtons joined #lisp 2015-03-08T16:26:32Z clop quit (Ping timeout: 245 seconds) 2015-03-08T16:26:53Z r_ quit (Ping timeout: 252 seconds) 2015-03-08T16:27:12Z mrkkrp: ynniv: God bless you! Yes, it works! Although this seems to be an undocumented function... Is it standard way to do this sort of thing? 2015-03-08T16:27:25Z ynniv: no idea, I just read the source 2015-03-08T16:27:43Z mrkkrp: ynniv: anyway, this is great. 2015-03-08T16:28:00Z Mon_Ouie quit (Ping timeout: 246 seconds) 2015-03-08T16:28:35Z ynniv: I think where you got caught up is that “compile” and “eval” mean specific things in common lisp. Typing at the slime repl isn’t quite either of these. 2015-03-08T16:32:49Z linux_dream quit (Quit: Leaving) 2015-03-08T16:33:43Z agumonkey quit (Ping timeout: 256 seconds) 2015-03-08T16:34:13Z mrkkrp quit (Remote host closed the connection) 2015-03-08T16:37:32Z beach: drmeister: I think you need to keep the special operator, but have the macro expand to something else. 2015-03-08T16:38:12Z beach: jackdaniel: I tried to submit a ticket. Is this an acceptable format for it? 2015-03-08T16:38:18Z GGMethos quit (Quit: WeeChat 1.0.1) 2015-03-08T16:40:17Z johann quit (Remote host closed the connection) 2015-03-08T16:40:25Z clop joined #lisp 2015-03-08T16:40:38Z paroneay` is now known as paroneayea 2015-03-08T16:41:29Z johann joined #lisp 2015-03-08T16:42:36Z manuel__ joined #lisp 2015-03-08T16:43:18Z Shinmera: hitecnologys: done. 2015-03-08T16:44:29Z Shinmera: hitecnologys: see http://shinmera.github.io/LASS/ , last section of the docs. 2015-03-08T16:44:33Z tcr quit (Quit: Leaving.) 2015-03-08T16:44:46Z hitecnologys: Shinmera: awesome, let me do some testing. 2015-03-08T16:45:02Z Shinmera: I had to wrangle with ASDF again to get it to work right :/ 2015-03-08T16:47:39Z hitecnologys: Shinmera: so, what it does is it generates test-file.css for every :last-file I specify, right? 2015-03-08T16:48:07Z Shinmera: hitecnologys: (:lass-file "foo") means foo.lass => foo.css 2015-03-08T16:48:19Z Shinmera: (:lass-file "foo" :output "bar") means foo.lass => bar.css 2015-03-08T16:48:39Z hitecnologys: Shinmera: I see. 2015-03-08T16:52:30Z hitecnologys: Shinmera: how does one specify pseudo classes? E.g. a:hover and similar. 2015-03-08T16:52:52Z drmeister: beach: I think I need to define a cl:multiple-value-call macro like this: http://paste.lisp.org/display/146146 2015-03-08T16:53:01Z GGMethos joined #lisp 2015-03-08T16:53:03Z drmeister: Does this look correct? 2015-03-08T16:53:18Z mozinrat quit (Remote host closed the connection) 2015-03-08T16:53:32Z Patzy quit (Ping timeout: 272 seconds) 2015-03-08T16:53:42Z Shinmera: hitecnologys: either just (a :hover) or (:and a :hover) 2015-03-08T16:53:49Z Patzy joined #lisp 2015-03-08T16:53:52Z hitecnologys: Shinmera: wait, it's it the docs, I noticed it only after 3rd time reading. 2015-03-08T16:54:54Z hitecnologys: Shinmera: you should probably put a list of syntax for all the widely-used selectors somewhere in one place. 2015-03-08T16:55:02Z ynniv quit (Quit: ynniv) 2015-03-08T16:55:03Z Shinmera: I probably should. 2015-03-08T16:55:16Z Shinmera: On the other hand, I'd also welcome it if someone else would. 2015-03-08T16:56:04Z hitecnologys: I can try, but some time later. Probably tomorrow. I've got deadlines to miss today. 2015-03-08T16:56:17Z Shinmera: I'm certainly in no hurry. 2015-03-08T16:56:19Z beach: drmeister: Or you can write a macro and a compiler macro. 2015-03-08T16:56:34Z hitecnologys: Good. 2015-03-08T16:57:25Z ASau quit (Ping timeout: 264 seconds) 2015-03-08T16:57:26Z beach: drmeister: Then you won't need the new special operator. 2015-03-08T16:57:43Z drmeister: I would just rename my current special operator. 2015-03-08T16:57:59Z beach: Actually, that might not work. 2015-03-08T16:58:10Z beach: You need to keep your current special operator. 2015-03-08T16:58:27Z drmeister: Also, neither my interpreter nor my Clasp compiler support compiler macros. There didn't seem to be a point to them. 2015-03-08T16:58:30Z beach: Otherwise you would no longer be conforming. 2015-03-08T16:58:40Z beach: Hmm. OK. 2015-03-08T16:58:42Z manuel__ quit (Quit: manuel__) 2015-03-08T16:59:13Z beach: drmeister: Another thing you might consider to get better performance. 2015-03-08T16:59:16Z drmeister: I'm going to start calling it my "bootstrapping compiler" 2015-03-08T16:59:32Z drmeister: Yes? 2015-03-08T16:59:39Z beach: compiler macros. 2015-03-08T16:59:49Z drmeister: Cleavir will have compiler macros. 2015-03-08T16:59:55Z beach: OK. 2015-03-08T17:00:19Z drmeister: The bootstrapping compiler won't be used once Cleavir is compiled. 2015-03-08T17:00:28Z beach: I understand. 2015-03-08T17:00:33Z drmeister: Cleavir will be the default compiler. 2015-03-08T17:00:43Z drmeister: Default == only. 2015-03-08T17:02:00Z drmeister: COMPILE and COMPILE-FILE will redirect forms to be compiled by Cleavir. I reuse a lot of the bootstrapping compilers code because it has everything I need set up to generate&compile LLVM-IR modules. 2015-03-08T17:02:15Z beach: Makes sense. 2015-03-08T17:03:09Z drmeister: Really, it's like the 26-odd functions that compile special forms and a few ancillary functions stop being used when the bootstrapping compiler is switched out and the Cleavir compiler is switched in. 2015-03-08T17:03:55Z drmeister: At least 3/4 of the bootstrapping compiler is used by the Cleavir/Clasp compiler. 2015-03-08T17:04:31Z beach: I think that is how you managed to make so quick progress. 2015-03-08T17:05:23Z pt1 joined #lisp 2015-03-08T17:05:55Z beach: ... and of course not getting much sleep. 2015-03-08T17:07:42Z ebrasca joined #lisp 2015-03-08T17:09:40Z beach: drmeister: I am thinking my next move should be to implement a simple non-null type inference routine. 2015-03-08T17:09:49Z nowhereman quit (Remote host closed the connection) 2015-03-08T17:10:11Z beach: ... aside from making progress on SICL, of course. 2015-03-08T17:11:53Z semtex-h quit (Read error: Connection reset by peer) 2015-03-08T17:13:52Z Jesin quit (Quit: Leaving) 2015-03-08T17:15:54Z axion: is there a more-specific ftype function type for a keyword symbol? 2015-03-08T17:16:49Z beach: KEYWORD is a type. 2015-03-08T17:16:51Z axion: writing a declaim for a function that takes &key :keyword 2015-03-08T17:17:01Z axion: ok thanks 2015-03-08T17:18:09Z axion: hmmm 2015-03-08T17:18:18Z Jesin joined #lisp 2015-03-08T17:18:24Z drmeister: beach: Sounds good. 2015-03-08T17:18:32Z axion: how would i write said declaim for a function that can return either a keyword or (values)? 2015-03-08T17:18:38Z drmeister: What would non-null type inference do? 2015-03-08T17:18:46Z axion: what would the return value be specified as in the declaim? 2015-03-08T17:19:02Z beach: drmeister: Nothing. And that is exactly what it is doing right now. 2015-03-08T17:19:38Z iqool joined #lisp 2015-03-08T17:19:43Z drmeister: I mean what would it do for optimization? 2015-03-08T17:19:57Z axion: not much aside being consistent with the rest of my optimized lib 2015-03-08T17:20:27Z xyh left #lisp 2015-03-08T17:21:14Z beach: drmeister: the plan is to define the function CONSP like this (defun consp (x) (typep x 'cons)) 2015-03-08T17:21:37Z beach: drmeister: Then there will be a compiler macro on typep, turning that into (typeq x cons) 2015-03-08T17:22:04Z psy_ joined #lisp 2015-03-08T17:22:27Z beach: drmeister: CAR would be defined like this (defun car (x) (if (consp x) (cleavir-primop:car x) (if (null x) nil (error...)))) 2015-03-08T17:22:39Z beach: drmeister: CONSP will be inlined. 2015-03-08T17:22:40Z drmeister: Can MULTIPLE-VALUE-PROG1 be implemented in terms of MULTIPLE-VALUE-CALL? 2015-03-08T17:22:41Z psy_ quit (Max SendQ exceeded) 2015-03-08T17:22:47Z schaueho joined #lisp 2015-03-08T17:23:11Z Jesin quit (Client Quit) 2015-03-08T17:23:18Z beach: Actually, it's time for me to go fix dinner. 2015-03-08T17:23:23Z psy_ joined #lisp 2015-03-08T17:23:35Z drmeister: beach: Ok - thanks - we can talk later. 2015-03-08T17:25:01Z drmeister: I guess I'll implement MULTIPLE-VALUE-PROG1 as a function. 2015-03-08T17:25:08Z drmeister: I've never seen it used. 2015-03-08T17:25:56Z kons joined #lisp 2015-03-08T17:25:57Z drmeister: So I'm guessing it doesn't need an optimized implementation - someone please tell me I'm wrong if I am. 2015-03-08T17:26:03Z Shinmera: prog1 itself is not used so often. A case where you also need multiple values would be even more rare. 2015-03-08T17:26:06Z Jesin joined #lisp 2015-03-08T17:27:53Z Shinmera: The only places where I ever used prog1/prog2 were in some of my parsers where I need to run an epilogue after retrieving the value I need. 2015-03-08T17:28:17Z k-stz joined #lisp 2015-03-08T17:28:24Z adlai: really? i (ab)use prog1 quite frequently 2015-03-08T17:28:36Z adlai: worse, aprog1 2015-03-08T17:29:41Z Shinmera: I'm guessing aprog1 is some kind of automatically binding thing? 2015-03-08T17:30:42Z adlai: https://github.com/tokenrove/anaphora/blob/master/anaphora.lisp#L56-L59 2015-03-08T17:31:02Z Shinmera: Yeah, that's what I guessed. 2015-03-08T17:32:15Z axion: how can i remove a previous declaim? 2015-03-08T17:32:32Z ajtulloch joined #lisp 2015-03-08T17:33:50Z Bike: declaiming something else, usually 2015-03-08T17:34:01Z adlai: you could proclaim back to defaults, if you want to effect a change in a running image 2015-03-08T17:35:00Z axion: i wanted the running lisp to revert back to the original function proclaimation as if none were manually specified 2015-03-08T17:36:08Z Bike: well, you could just do (declaim (ftype function whatever)) 2015-03-08T17:36:31Z axion: the problem is its a function that cant really be declaimed now that it changed 2015-03-08T17:36:43Z axion: i mean it can return many different things 2015-03-08T17:36:46Z axion: types rather 2015-03-08T17:37:12Z Bike: yes, which is why you just give it a stupid type like "function" which is true regardless. 2015-03-08T17:38:24Z axion: ah ok 2015-03-08T17:38:53Z zeitue quit (Ping timeout: 240 seconds) 2015-03-08T17:40:47Z ajtulloch quit (Ping timeout: 252 seconds) 2015-03-08T17:40:53Z Patzy quit (Ping timeout: 240 seconds) 2015-03-08T17:41:08Z iqool1 joined #lisp 2015-03-08T17:41:41Z Patzy joined #lisp 2015-03-08T17:42:19Z iqool1 left #lisp 2015-03-08T17:42:41Z iqool quit (Ping timeout: 244 seconds) 2015-03-08T17:43:33Z Nshag joined #lisp 2015-03-08T17:47:05Z alvis` joined #lisp 2015-03-08T17:50:32Z scymtym quit (Ping timeout: 272 seconds) 2015-03-08T17:50:41Z ASau joined #lisp 2015-03-08T17:52:37Z d4ryus_ is now known as d4ryus 2015-03-08T17:52:52Z vaporatorius joined #lisp 2015-03-08T17:52:59Z zeitue joined #lisp 2015-03-08T17:53:09Z superlinux-hp joined #lisp 2015-03-08T17:53:34Z Pastaf joined #lisp 2015-03-08T17:53:38Z superlinux-hp: hi. does this channel deal with AutoLisp of AutoCAD? 2015-03-08T17:53:57Z axion: this is just for common lisp 2015-03-08T17:55:24Z axion: superlinux-hp: the channel for other lisps is ##lisp 2015-03-08T17:55:39Z superlinux-hp: axion, ok thanks 2015-03-08T18:00:13Z nikki93 joined #lisp 2015-03-08T18:00:52Z zlrth quit (Remote host closed the connection) 2015-03-08T18:00:55Z alakra quit (Quit: WeeChat 0.4.2) 2015-03-08T18:01:30Z hitecnologys: Shinmera: the component thing does seem to work fine. 2015-03-08T18:01:37Z nikki93 quit (Remote host closed the connection) 2015-03-08T18:02:11Z r_ joined #lisp 2015-03-08T18:02:26Z Shinmera: I hope so. I did at least test it. 2015-03-08T18:02:45Z hitecnologys: There's one more question I've had, though. Is using || the only way to specify ID selector? 2015-03-08T18:04:25Z Shinmera: Just "#foo" will work too 2015-03-08T18:05:09Z hitecnologys: Both variants looks kind of ugly. 2015-03-08T18:05:13Z Shinmera: I know. 2015-03-08T18:05:48Z jackdaniel: beach: about trace.lsp? yes, it's fine, thanks 2015-03-08T18:05:49Z r__ quit (Ping timeout: 264 seconds) 2015-03-08T18:05:52Z jackdaniel: :-) 2015-03-08T18:06:03Z Shinmera: I still don't really have any smart ideas about this even now. The only thing I can think of would be (:id foo) but that's more to type than I'd like 2015-03-08T18:06:53Z x1n4u quit (Ping timeout: 240 seconds) 2015-03-08T18:07:07Z hitecnologys: Right. I don't like that notation as well. 2015-03-08T18:07:32Z Shinmera: It could be fixed with a custom read table, but the point of it all is that it should just work regularly too. 2015-03-08T18:08:26Z hitecnologys: Yeah, I agree. 2015-03-08T18:08:46Z gko__ quit (Ping timeout: 256 seconds) 2015-03-08T18:09:12Z x1n4u joined #lisp 2015-03-08T18:09:36Z gko__ joined #lisp 2015-03-08T18:10:02Z kami quit (Remote host closed the connection) 2015-03-08T18:12:10Z hiroakip quit (Ping timeout: 256 seconds) 2015-03-08T18:16:50Z yaewa quit (Quit: Leaving...) 2015-03-08T18:19:13Z moei joined #lisp 2015-03-08T18:24:02Z nikki93 joined #lisp 2015-03-08T18:24:04Z defaultxr joined #lisp 2015-03-08T18:25:40Z pleasant-pyon is now known as antitone-pyon 2015-03-08T18:28:09Z nikki93 quit (Ping timeout: 244 seconds) 2015-03-08T18:28:19Z mj-0 joined #lisp 2015-03-08T18:29:53Z zeitue quit (Ping timeout: 256 seconds) 2015-03-08T18:33:58Z arenz joined #lisp 2015-03-08T18:34:10Z pt1 quit (Remote host closed the connection) 2015-03-08T18:35:34Z hiyosi quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-03-08T18:37:37Z xificurC joined #lisp 2015-03-08T18:37:45Z mj-0 quit (Remote host closed the connection) 2015-03-08T18:39:21Z nikki93 joined #lisp 2015-03-08T18:39:46Z nikki93 quit (Remote host closed the connection) 2015-03-08T18:40:48Z modula joined #lisp 2015-03-08T18:42:25Z zeitue joined #lisp 2015-03-08T18:43:08Z defaultxr quit (Ping timeout: 244 seconds) 2015-03-08T18:43:08Z modula is now known as defaultxr 2015-03-08T18:46:59Z mvilleneuve joined #lisp 2015-03-08T18:47:13Z mvilleneuve quit (Client Quit) 2015-03-08T18:51:11Z schaueho quit (Ping timeout: 252 seconds) 2015-03-08T18:54:17Z nikki93 joined #lisp 2015-03-08T18:55:06Z normanrichards joined #lisp 2015-03-08T19:01:04Z Patzy quit (Ping timeout: 245 seconds) 2015-03-08T19:01:58Z johann quit (Remote host closed the connection) 2015-03-08T19:02:07Z Patzy joined #lisp 2015-03-08T19:06:51Z beach left #lisp 2015-03-08T19:08:21Z modula joined #lisp 2015-03-08T19:08:47Z Davidbrcz quit (Ping timeout: 252 seconds) 2015-03-08T19:08:49Z Davidbrcz_ quit (Ping timeout: 264 seconds) 2015-03-08T19:09:02Z mvilleneuve joined #lisp 2015-03-08T19:10:20Z defaultxr quit (Ping timeout: 272 seconds) 2015-03-08T19:10:20Z modula is now known as defaultxr 2015-03-08T19:12:44Z sgware joined #lisp 2015-03-08T19:13:39Z cadadar quit (Quit: Leaving.) 2015-03-08T19:13:47Z sgware: Hello lisp channel. Is it possible to set a recursion depth limit in CL or in CLISP? 2015-03-08T19:14:07Z oleo: yes 2015-03-08T19:14:26Z sgware: Thanks. Can you please tell me how? 2015-03-08T19:16:32Z tcr joined #lisp 2015-03-08T19:17:11Z oleo: http://paste.lisp.org/display/146148 2015-03-08T19:18:25Z milosn quit (Read error: Connection reset by peer) 2015-03-08T19:20:40Z oleo: you can take that as a template .... 2015-03-08T19:20:53Z oleo: to make your own 2015-03-08T19:22:24Z superlinux-hp quit (Ping timeout: 244 seconds) 2015-03-08T19:22:40Z oleo: (levels '(a (b) ((c)) (((d))))) 2015-03-08T19:23:39Z sgware: hmm 2015-03-08T19:24:04Z ben_vulpes: as i go about (ql:install :foo) while working on a new project, how do i codify all of the libraries my project will require to compile on a system that is not my development machine? 2015-03-08T19:24:29Z sgware: (print (levels '(a (b) ((c)) (((d)))))) -> ENDP: A proper list must not end with A 2015-03-08T19:24:38Z Xach: ben_vulpes: there isn't an easy way to do that. 2015-03-08T19:24:49Z milosn joined #lisp 2015-03-08T19:25:38Z Xach: ben_vulpes: the :depends-on list is an approximation. of course each of those things will often depend-on their own stuff, too. 2015-03-08T19:25:38Z ben_vulpes: Xach: what's the hard way? 2015-03-08T19:25:58Z Xach: ben_vulpes: what i do is load the project and then enumerate what's been loaded. 2015-03-08T19:26:40Z oleo: sgware: here it works, you don't need the print tho..... 2015-03-08T19:26:50Z Xach: you can do that with asdf:map-systems 2015-03-08T19:26:55Z normanrichards quit 2015-03-08T19:27:02Z sgware: I guess I was hoping there was some kind of system variable that I could set to limit recursion. The context here is that I'm teaching my students about efficiency. I want to give them some problems to solve, and I want to limit recursion depth to force them to write efficient solutions. 2015-03-08T19:27:17Z Xach: ben_vulpes: the "qlot" project aims to systematize it a bit more. i haven't tried it for a serious project yet but i'd like to, soon. 2015-03-08T19:27:43Z Mon_Ouie joined #lisp 2015-03-08T19:27:47Z dim: qlot? 2015-03-08T19:27:53Z Xach: qlot 2015-03-08T19:28:07Z oleo: the code should tell what the limit is.....normally.... 2015-03-08T19:28:11Z Shinmera: sgware: What's wrong with letting them just run into stack exhaustion? 2015-03-08T19:28:14Z sgware: oleo: I'm still getting that error when I run it on http://www.tutorialspoint.com/execute_lisp_online.php (which is using GNU clisp 2.49, if that helps. 2015-03-08T19:28:21Z dim means hi Xach, how're you doing? that new project name sounds interesting... 2015-03-08T19:28:48Z Xach: Hi! 2015-03-08T19:29:17Z dim: ;-) 2015-03-08T19:29:32Z dim: sometimes IRC makes it hard to remember the basics 2015-03-08T19:30:34Z ben_vulpes: well thanks, Xach. i don't have much by way of "serious project" yet, but want to avoid shooting myself in the foot as i grow some things. 2015-03-08T19:31:11Z sgware_ joined #lisp 2015-03-08T19:31:18Z sgware_: sorry, lost connection 2015-03-08T19:31:21Z Xach: ben_vulpes: there isn't a strong distinction between how you get libraries on your development system and how you get them anywhere else 2015-03-08T19:31:39Z Xach: there isn't a two-pronged process right now. i think that might change in time. 2015-03-08T19:32:37Z sgware quit (Ping timeout: 246 seconds) 2015-03-08T19:32:38Z ben_vulpes: mostly i'm concerned with avoiding snowflake development environment system syndrome 2015-03-08T19:32:38Z sgware_: I want to limit recursion depth to force students to find efficient solutions to problems. I won't be able to control stack size on their individual computers and don't want them to succeed just by allocating a lot of stack space to a poor solution. 2015-03-08T19:32:57Z sgware_: test 2015-03-08T19:33:08Z sgware_: Sorry... I think my IRC client is derping. 2015-03-08T19:33:25Z Joreji joined #lisp 2015-03-08T19:33:31Z Shinmera: just make the test samples large enough 2015-03-08T19:33:51Z Shinmera: or force a minimal time limit on a solution 2015-03-08T19:33:54Z sgware_: That's easier said than done Shinmera. 2015-03-08T19:33:57Z Shinmera: *maximal time limit 2015-03-08T19:33:57Z Xach: ben_vulpes: that was a pretty common problem pre-quicklisp, but quicklisp helps mitigate it (without fully solving it) 2015-03-08T19:34:07Z Shinmera: sgware_: Depends on your task. Can be super easy. 2015-03-08T19:34:40Z sgware_: In my case it is not. The task is generating sattisfiable and unsatisfiable random 3-SAT problems. 2015-03-08T19:35:43Z sgware_: All problems must be such that they are small enough to be solved by the DPLL algorithm (on any computer, any configuration) and large enough that they can't be solved by DPLL without unit propagation and pure variable elimination (on any computer, any configuration) 2015-03-08T19:36:25Z sgware_: I was kind of hoping there would either be a system variable like *recursion-depth-limit* or some kind of macro I could use. 2015-03-08T19:39:07Z oleo: sgware_: http://paste.lisp.org/display/146148#1 2015-03-08T19:39:23Z ndrei quit (Ping timeout: 252 seconds) 2015-03-08T19:41:09Z Shinmera: sgware_: You can make a macro that'll redefine a function such that you can only call the function recursively up to a limit. 2015-03-08T19:41:15Z ndrei joined #lisp 2015-03-08T19:41:36Z sgware_: Oh, yeah, that should work. 2015-03-08T19:41:46Z Shinmera: But that'll only work for you, when you test your solutions 2015-03-08T19:42:03Z Shinmera: or you'll have to somehow force your students to use that redefinition or something. 2015-03-08T19:42:15Z sgware_: How do I detect a recursive call? 2015-03-08T19:42:37Z Shinmera: bind a dynamic variable, increase it. 2015-03-08T19:42:53Z Shinmera: or something similar. 2015-03-08T19:45:06Z liqu0rice quit (Quit: leaving) 2015-03-08T19:45:38Z Shinmera: Something like this would work, I suppose. http://plaster.tymoon.eu/view/9B# 2015-03-08T19:45:58Z Shinmera: Though I still don't really know what your specific requirements are, what you can force your students to do and what not, etc. 2015-03-08T19:46:25Z arenz quit (Ping timeout: 265 seconds) 2015-03-08T19:46:53Z Shinmera: The above will obviously only work if the function calls itself. If you call out to a different function which is not defined using DEFINE-WITH-LIMITED-RECURSION and recurses then it won't detect it. 2015-03-08T19:47:21Z sz0 joined #lisp 2015-03-08T19:47:47Z oleo: sgware_: use maxima-online.org for lisp stuff ....it is better.... 2015-03-08T19:48:18Z oleo: sgware_: just use :lisp (defun....); :lisp (levels '(bla)); command then there 2015-03-08T19:48:36Z oleo: sgware_: i tried your site and i can't get it to work there too.... 2015-03-08T19:48:37Z sgware_: Shinmera: Thanks. Let me try that out real fast. 2015-03-08T19:49:15Z johann joined #lisp 2015-03-08T19:52:12Z manuel__ joined #lisp 2015-03-08T19:54:26Z manuel__ quit (Client Quit) 2015-03-08T19:54:40Z pjb: sgware_: yes, it's possible (defun f (n max-recursion) (when (minusp max-recursion) (error "max recursion reached")) (if (zerop n) 1 (* n (f (1- n) (1- max-recursion))))) (f 10 3) 2015-03-08T19:54:43Z manuel__ joined #lisp 2015-03-08T19:55:22Z nikki93 quit (Remote host closed the connection) 2015-03-08T19:55:56Z nikki93 joined #lisp 2015-03-08T19:56:34Z sgware_: This will work Shinmera, thanks. 2015-03-08T19:57:20Z ggole quit 2015-03-08T19:57:24Z pjb: It's silly to put mechanical artificial constraints to student exercises. If you want them to provide an iterative solution, then just say so. 2015-03-08T19:57:28Z kcj joined #lisp 2015-03-08T19:58:57Z nikki93_ joined #lisp 2015-03-08T19:59:24Z nikki93 quit (Read error: Connection reset by peer) 2015-03-08T19:59:25Z sgware_: I don't want them to provide an iterative solution. I just don't want them to write an inefficient solution which still passes because they allocated a huge stack limit and let it runs for days. 2015-03-08T20:02:09Z pjb: That said, there's space for a pedagogical CL implementation, with this kind of instrumentation and others, and with studient oriented helpers and debuggers. Like PHENARETE http://www.ai.univ-paris8.fr/~hw/manMachine.pdf 2015-03-08T20:02:10Z jackdaniel: sgware_: then put time constraint 2015-03-08T20:02:26Z nell quit (Quit: WeeChat 1.2-dev) 2015-03-08T20:03:02Z sgware_: Same problem: Different computers run at different speeds. I don't want to penalize students with slow computers and reward ones with fast computers. 2015-03-08T20:03:26Z jackdaniel: tests may be handled uniformly tough 2015-03-08T20:03:36Z pjb: Hence the instrumentalized implementation: you could just count the VM instructions. 2015-03-08T20:04:34Z jackdaniel: and if you put *high-enought-tm* time constraint, so it would fail only on ridiculusly bad implementations 2015-03-08T20:04:44Z jackdaniel: you have your bias 2015-03-08T20:04:46Z sgware_: I'm happy with the current solution of just limiting recursion depth. Thanks though. 2015-03-08T20:08:02Z sgware_ quit (Quit: Page closed) 2015-03-08T20:11:40Z yorick quit (Remote host closed the connection) 2015-03-08T20:12:43Z eni joined #lisp 2015-03-08T20:14:24Z Harag quit (Ping timeout: 245 seconds) 2015-03-08T20:15:15Z nikki93_ quit (Remote host closed the connection) 2015-03-08T20:16:16Z mvilleneuve quit (Ping timeout: 256 seconds) 2015-03-08T20:16:23Z yorick joined #lisp 2015-03-08T20:16:28Z _5kg quit (Ping timeout: 255 seconds) 2015-03-08T20:19:21Z _5kg joined #lisp 2015-03-08T20:20:47Z cadadar joined #lisp 2015-03-08T20:21:03Z gko__ quit (Quit: Connection closed for inactivity) 2015-03-08T20:21:43Z rhllor joined #lisp 2015-03-08T20:23:08Z alvis` quit (Ping timeout: 246 seconds) 2015-03-08T20:24:02Z xrash joined #lisp 2015-03-08T20:26:02Z Shinmera: Looks like my lightning talk on Qtools for ELS is set and ready. Just did a practise run and I clocked in at four and a half minutes. 2015-03-08T20:30:38Z __main__ quit (Read error: Connection reset by peer) 2015-03-08T20:33:23Z hiroakip joined #lisp 2015-03-08T20:36:05Z admg quit (Quit: Laptop gone to sleep...) 2015-03-08T20:37:10Z Patzy quit (Ping timeout: 255 seconds) 2015-03-08T20:37:46Z Patzy joined #lisp 2015-03-08T20:40:41Z __main__ joined #lisp 2015-03-08T20:42:10Z nell joined #lisp 2015-03-08T20:42:33Z cpc26_ joined #lisp 2015-03-08T20:43:01Z cpc26 quit (Ping timeout: 252 seconds) 2015-03-08T20:43:17Z selat quit (Quit: Lost terminal) 2015-03-08T20:44:09Z cadadar quit (Quit: Leaving.) 2015-03-08T20:44:31Z gravicappa quit (Ping timeout: 264 seconds) 2015-03-08T20:45:46Z bgs100 joined #lisp 2015-03-08T20:53:52Z reader quit (Quit: Thus spake the master programmer: "Time for you to leave.") 2015-03-08T20:55:53Z Mon_Ouie quit (Ping timeout: 240 seconds) 2015-03-08T20:58:12Z smull quit (Read error: Connection reset by peer) 2015-03-08T20:59:09Z fxer_ joined #lisp 2015-03-08T21:00:36Z nicdev quit (Remote host closed the connection) 2015-03-08T21:00:47Z brkpnt joined #lisp 2015-03-08T21:01:28Z munksgaard quit (Ping timeout: 255 seconds) 2015-03-08T21:02:10Z fxer quit (Ping timeout: 250 seconds) 2015-03-08T21:03:07Z munksgaard joined #lisp 2015-03-08T21:03:37Z Joreji quit (Ping timeout: 245 seconds) 2015-03-08T21:05:01Z paroneay` joined #lisp 2015-03-08T21:05:45Z akkad quit (Excess Flood) 2015-03-08T21:08:19Z paroneayea quit (Ping timeout: 252 seconds) 2015-03-08T21:09:11Z cadadar joined #lisp 2015-03-08T21:10:39Z ASau quit (Ping timeout: 245 seconds) 2015-03-08T21:10:56Z akkad joined #lisp 2015-03-08T21:11:25Z scymtym joined #lisp 2015-03-08T21:12:02Z paroneay` is now known as paroneayea 2015-03-08T21:15:33Z Davidbrcz joined #lisp 2015-03-08T21:16:02Z Davidbrcz_ joined #lisp 2015-03-08T21:18:12Z jjwatt quit (Quit: WeeChat 1.1.1) 2015-03-08T21:18:39Z ASau joined #lisp 2015-03-08T21:22:17Z hiroakip quit (Ping timeout: 246 seconds) 2015-03-08T21:23:37Z Patzy quit (Ping timeout: 245 seconds) 2015-03-08T21:24:36Z Patzy joined #lisp 2015-03-08T21:26:39Z beans222 joined #lisp 2015-03-08T21:27:08Z quazimodo quit (Ping timeout: 272 seconds) 2015-03-08T21:31:31Z francogrex joined #lisp 2015-03-08T21:32:35Z francogrex: https://github.com/froggey/Mezzano has anyone tried? Is this supposed to work on your pc just like a linux install or is it a joke? 2015-03-08T21:33:38Z xificurC quit (Ping timeout: 244 seconds) 2015-03-08T21:36:01Z hiroakip joined #lisp 2015-03-08T21:36:55Z munksgaard quit (Ping timeout: 252 seconds) 2015-03-08T21:37:46Z j0nii joined #lisp 2015-03-08T21:38:03Z jackdaniel: francogrex: it's working OS, not a joke 2015-03-08T21:38:19Z jackdaniel only read ppl here, didn't try it himself 2015-03-08T21:40:45Z cpc26 joined #lisp 2015-03-08T21:41:56Z cpc26_ quit (Ping timeout: 265 seconds) 2015-03-08T21:42:21Z attila_lendvai joined #lisp 2015-03-08T21:45:03Z eni quit (Quit: Leaving) 2015-03-08T21:47:50Z wemeetagain quit (Ping timeout: 246 seconds) 2015-03-08T21:48:56Z burtons: restarts, how do they work? say I have a function that has a 'continue' restart, how could I be able to automatically select it and continue with execution? 2015-03-08T21:49:14Z burtons: i've tried restart-case and with-simple-restart but that doesn't seem to work 2015-03-08T21:51:29Z burtons: got it, handler-bind, find-restart and then invoke-restart... 2015-03-08T21:53:49Z angavrilov quit (Remote host closed the connection) 2015-03-08T21:54:06Z Longlius joined #lisp 2015-03-08T21:54:49Z mishoo quit (Ping timeout: 244 seconds) 2015-03-08T21:56:15Z sunwukong quit (Read error: Connection reset by peer) 2015-03-08T21:56:53Z sunwukong joined #lisp 2015-03-08T21:58:32Z nell quit (Quit: WeeChat 1.2-dev) 2015-03-08T21:58:50Z zygentoma joined #lisp 2015-03-08T21:58:52Z munksgaard joined #lisp 2015-03-08T22:00:14Z ehu quit (Quit: Leaving.) 2015-03-08T22:00:34Z johann quit (Remote host closed the connection) 2015-03-08T22:00:54Z oleo_ joined #lisp 2015-03-08T22:00:54Z oleo is now known as Guest81523 2015-03-08T22:02:23Z Guest81523 quit (Ping timeout: 240 seconds) 2015-03-08T22:05:09Z milosn quit (Ping timeout: 244 seconds) 2015-03-08T22:06:51Z milosn joined #lisp 2015-03-08T22:09:35Z radioninja quit (Remote host closed the connection) 2015-03-08T22:10:26Z attila_lendvai quit (Ping timeout: 252 seconds) 2015-03-08T22:11:28Z rhllor quit (Quit: rhllor) 2015-03-08T22:12:18Z oleo_ is now known as oleo 2015-03-08T22:12:23Z francogrex quit (Ping timeout: 244 seconds) 2015-03-08T22:14:20Z ajtulloch joined #lisp 2015-03-08T22:14:43Z Bike quit (Quit: restart hell) 2015-03-08T22:16:15Z ebrasca quit (Read error: Connection reset by peer) 2015-03-08T22:16:57Z Bike joined #lisp 2015-03-08T22:17:32Z ajtulloch quit (Read error: Connection reset by peer) 2015-03-08T22:17:35Z arnaudga joined #lisp 2015-03-08T22:17:53Z ebrasca joined #lisp 2015-03-08T22:17:58Z ajtulloch joined #lisp 2015-03-08T22:18:22Z csziacobus joined #lisp 2015-03-08T22:18:26Z mrSpec quit (Quit: mrSpec) 2015-03-08T22:19:59Z zacharias joined #lisp 2015-03-08T22:20:27Z tcr quit (Quit: Leaving.) 2015-03-08T22:22:05Z johann joined #lisp 2015-03-08T22:22:29Z munksgaard quit (Ping timeout: 246 seconds) 2015-03-08T22:23:05Z ajtulloch quit (Read error: Connection reset by peer) 2015-03-08T22:23:41Z ajtulloch joined #lisp 2015-03-08T22:26:37Z Quadrescence joined #lisp 2015-03-08T22:30:16Z adlai: burtons: the default restarts also have functions which abstract the common patterns 2015-03-08T22:30:22Z adlai: clhs 9.1.4.2.2 2015-03-08T22:30:22Z specbot: Interfaces to Restarts: http://www.lispworks.com/reference/HyperSpec/Body/09_adbb.htm 2015-03-08T22:31:23Z burtons: thanks 2015-03-08T22:31:34Z burtons: my first time using restarts 2015-03-08T22:32:12Z burtons: so how would you use the defaults? i'm trying to catch a 'continue restart 2015-03-08T22:32:19Z burtons: just use #'continue in handler-bind? 2015-03-08T22:33:59Z sol__ quit (Ping timeout: 245 seconds) 2015-03-08T22:39:07Z sunwukong quit (Ping timeout: 264 seconds) 2015-03-08T22:40:07Z pjb: (invoke-restart 'continue) 2015-03-08T22:40:16Z sol__ joined #lisp 2015-03-08T22:40:22Z pjb: You don't catch restats, you invoke them. 2015-03-08T22:40:32Z yrdz quit (Remote host closed the connection) 2015-03-08T22:40:33Z pjb: It's like a jump. 2015-03-08T22:40:54Z burtons: catch the error, invoke the restart, correct? 2015-03-08T22:41:51Z pjb: yes. 2015-03-08T22:42:53Z stepnem quit (Ping timeout: 250 seconds) 2015-03-08T22:43:57Z yrdz joined #lisp 2015-03-08T22:44:34Z burtons: i got what i wanted working 2015-03-08T22:45:54Z burtons: so i pulled the editor out of mezzano into a separate project 2015-03-08T22:46:04Z burtons: https://github.com/burtonsamograd/med 2015-03-08T22:46:13Z sz0 quit (Quit: My computer has gone to sleep. ZZZzzz…) 2015-03-08T22:46:26Z Davidbrcz quit (Ping timeout: 256 seconds) 2015-03-08T22:46:37Z Davidbrcz_ quit (Ping timeout: 264 seconds) 2015-03-08T22:47:04Z karswell joined #lisp 2015-03-08T22:48:36Z burtons: just got an .asd file working for it 2015-03-08T22:51:48Z akkad quit (Excess Flood) 2015-03-08T22:53:26Z akkad joined #lisp 2015-03-08T22:54:58Z brkpnt quit (Quit: Leaving) 2015-03-08T22:56:04Z burtons quit (Read error: No route to host) 2015-03-08T22:58:29Z burtons joined #lisp 2015-03-08T22:58:40Z brian_o joined #lisp 2015-03-08T22:59:52Z quazimodo joined #lisp 2015-03-08T23:00:40Z nell joined #lisp 2015-03-08T23:01:02Z burtons quit (Remote host closed the connection) 2015-03-08T23:02:01Z burtons joined #lisp 2015-03-08T23:03:42Z csziacobus: there an easy way to look for mismatched parens in a directory? 2015-03-08T23:05:23Z badkins joined #lisp 2015-03-08T23:06:00Z quazimodo quit (Remote host closed the connection) 2015-03-08T23:06:23Z xorox90 joined #lisp 2015-03-08T23:08:03Z ASau quit (Read error: Connection reset by peer) 2015-03-08T23:08:16Z quazimodo joined #lisp 2015-03-08T23:08:21Z ASau joined #lisp 2015-03-08T23:09:52Z zacts quit (Ping timeout: 245 seconds) 2015-03-08T23:10:34Z brian_o: what editor? 2015-03-08T23:10:55Z burtons: are you talking to me? 2015-03-08T23:11:12Z brian_o: you could move forward by sexp until you found the culprit 2015-03-08T23:11:17Z zacts joined #lisp 2015-03-08T23:11:24Z burtons: guess not 2015-03-08T23:11:26Z brian_o: csziacobus 2015-03-08T23:11:49Z burtons: sorry, i just said something about my editor project 2015-03-08T23:12:05Z brian_o: oh, no, he had a question 2015-03-08T23:12:09Z burtons: np 2015-03-08T23:12:27Z csziacobus: any editor, i have a bunch of files in a directory that might have an unmatched paren 2015-03-08T23:12:40Z csziacobus: or even shell command is fine 2015-03-08T23:12:56Z csziacobus: i know i could just go through each file and M-x check-parens but... 2015-03-08T23:13:04Z csziacobus: theres alot of files 2015-03-08T23:15:15Z k-stz quit (Remote host closed the connection) 2015-03-08T23:15:31Z brandonz joined #lisp 2015-03-08T23:16:19Z brandonz left #lisp 2015-03-08T23:18:51Z ajtulloch quit (Ping timeout: 252 seconds) 2015-03-08T23:21:08Z arnaudga quit (Ping timeout: 272 seconds) 2015-03-08T23:21:48Z innertracks joined #lisp 2015-03-08T23:23:26Z urandom__ quit (Quit: Konversation terminated!) 2015-03-08T23:25:14Z sol__ quit (Ping timeout: 252 seconds) 2015-03-08T23:25:42Z axion: is there an easy way to flatten a vector of vectors? #(#(1 2 3) #(4 5 6)) = #(1 2 3 4 5 6) 2015-03-08T23:26:45Z adeht: (apply #'concatenate 'vector vov) 2015-03-08T23:27:19Z adeht: erm, almost 2015-03-08T23:27:21Z Bike: (coerce vov 'list), maybe. gross. 2015-03-08T23:28:24Z axion: hmm 2015-03-08T23:28:37Z zeitue quit (Ping timeout: 245 seconds) 2015-03-08T23:29:00Z ajtulloch joined #lisp 2015-03-08T23:29:21Z adeht: you can just write a nice function and be done with it. it could create a vector of the right size and use replace to copy the elements 2015-03-08T23:32:23Z antitone-pyon is now known as pyon-tinuation 2015-03-08T23:37:12Z pyx joined #lisp 2015-03-08T23:37:20Z pyx quit (Client Quit) 2015-03-08T23:38:20Z Shinmera quit (Quit: しつれいしなければならないんです。) 2015-03-08T23:42:16Z zeitue joined #lisp 2015-03-08T23:43:02Z hiyosi joined #lisp 2015-03-08T23:44:42Z steelbird joined #lisp 2015-03-08T23:47:18Z burtonmz joined #lisp 2015-03-08T23:52:22Z arpunk joined #lisp