2015-12-17T00:11:32Z Riastradh quit (Ping timeout: 246 seconds) 2015-12-17T00:14:36Z emacsomancer joined #scheme 2015-12-17T00:15:43Z octo_ is now known as Octophore 2015-12-17T00:18:44Z przl joined #scheme 2015-12-17T00:21:32Z bb010g joined #scheme 2015-12-17T00:23:59Z przl quit (Ping timeout: 255 seconds) 2015-12-17T00:27:51Z daviid quit (Ping timeout: 265 seconds) 2015-12-17T00:37:50Z davexunit joined #scheme 2015-12-17T01:11:42Z masoudd joined #scheme 2015-12-17T01:17:27Z duggiefresh quit (Remote host closed the connection) 2015-12-17T01:19:29Z przl joined #scheme 2015-12-17T01:22:31Z duggiefresh joined #scheme 2015-12-17T01:22:31Z duggiefresh quit (Client Quit) 2015-12-17T01:23:46Z harmchop quit (Ping timeout: 250 seconds) 2015-12-17T01:23:46Z kwmiebach quit (Ping timeout: 250 seconds) 2015-12-17T01:24:48Z przl quit (Ping timeout: 256 seconds) 2015-12-17T01:25:19Z harmchop joined #scheme 2015-12-17T01:25:22Z greghendershott_ quit (Ping timeout: 256 seconds) 2015-12-17T01:26:38Z kwmiebach joined #scheme 2015-12-17T01:27:19Z greghendershott_ joined #scheme 2015-12-17T01:29:34Z jao joined #scheme 2015-12-17T01:41:48Z masoudd quit (Ping timeout: 265 seconds) 2015-12-17T01:44:51Z yrdz``` is now known as yrdz 2015-12-17T01:45:30Z ozzloy quit (Quit: leaving) 2015-12-17T01:45:38Z yrdz quit (Changing host) 2015-12-17T01:45:38Z yrdz joined #scheme 2015-12-17T01:45:46Z ozzloy joined #scheme 2015-12-17T01:45:46Z ozzloy quit (Changing host) 2015-12-17T01:45:46Z ozzloy joined #scheme 2015-12-17T01:47:07Z cemerick joined #scheme 2015-12-17T02:10:44Z sethalves quit (Remote host closed the connection) 2015-12-17T02:16:06Z adu joined #scheme 2015-12-17T02:20:15Z przl joined #scheme 2015-12-17T02:20:58Z adu quit (Client Quit) 2015-12-17T02:21:47Z pierpa joined #scheme 2015-12-17T02:23:02Z aap_ joined #scheme 2015-12-17T02:26:34Z aap quit (Ping timeout: 256 seconds) 2015-12-17T02:26:35Z przl quit (Ping timeout: 260 seconds) 2015-12-17T02:34:15Z psy_ quit (Ping timeout: 240 seconds) 2015-12-17T02:38:33Z bb010g quit (Quit: Connection closed for inactivity) 2015-12-17T02:43:42Z \var joined #scheme 2015-12-17T03:06:11Z jao quit (Ping timeout: 246 seconds) 2015-12-17T03:06:26Z hiroakip quit (Ping timeout: 255 seconds) 2015-12-17T03:07:58Z githogori quit (Remote host closed the connection) 2015-12-17T03:12:47Z cibs quit (Ping timeout: 272 seconds) 2015-12-17T03:13:03Z cibs joined #scheme 2015-12-17T03:17:06Z nanoz joined #scheme 2015-12-17T03:20:26Z Neet quit (Ping timeout: 240 seconds) 2015-12-17T03:20:51Z stasku_ quit (Ping timeout: 250 seconds) 2015-12-17T03:21:17Z ec quit (Ping timeout: 250 seconds) 2015-12-17T03:21:32Z Neet joined #scheme 2015-12-17T03:23:34Z stasku_ joined #scheme 2015-12-17T03:24:10Z ec joined #scheme 2015-12-17T03:35:55Z ep quit (Quit: Connection closed for inactivity) 2015-12-17T03:49:08Z ArneBab joined #scheme 2015-12-17T03:52:47Z ArneBab_ quit (Ping timeout: 265 seconds) 2015-12-17T03:59:12Z adu joined #scheme 2015-12-17T04:06:44Z badkins quit (Remote host closed the connection) 2015-12-17T04:10:28Z adu quit (Quit: adu) 2015-12-17T04:12:12Z githogori joined #scheme 2015-12-17T04:29:09Z dytrivedi joined #scheme 2015-12-17T04:29:44Z adu joined #scheme 2015-12-17T04:37:45Z davexunit quit (Quit: Later) 2015-12-17T04:45:21Z dytrivedi quit (Quit: dytrivedi) 2015-12-17T05:01:13Z dytrivedi joined #scheme 2015-12-17T05:04:10Z dytrivedi quit (Client Quit) 2015-12-17T05:09:04Z adu quit (Quit: adu) 2015-12-17T05:14:20Z vikraman quit (Quit: Bye!) 2015-12-17T05:21:32Z adu joined #scheme 2015-12-17T05:29:29Z mbuf joined #scheme 2015-12-17T05:32:57Z oleo_ quit (Quit: Verlassend) 2015-12-17T05:41:23Z nilg joined #scheme 2015-12-17T06:01:23Z excelsior joined #scheme 2015-12-17T06:01:29Z excelsior quit (Client Quit) 2015-12-17T06:09:51Z f-a joined #scheme 2015-12-17T06:11:15Z pierpa quit (Ping timeout: 240 seconds) 2015-12-17T06:31:48Z daviid joined #scheme 2015-12-17T06:33:59Z ec is now known as cheeto_wuz_here 2015-12-17T06:36:26Z ecthiender joined #scheme 2015-12-17T06:36:32Z NeverDie left #scheme 2015-12-17T06:37:43Z cheeto_wuz_here is now known as ec 2015-12-17T06:43:35Z vikraman joined #scheme 2015-12-17T06:54:17Z akkad quit (Quit: Emacs must have died) 2015-12-17T07:17:59Z cross quit (Quit: Lost terminal) 2015-12-17T07:18:51Z aap_ is now known as aap 2015-12-17T07:35:58Z cemerick quit (Ping timeout: 256 seconds) 2015-12-17T07:44:54Z mmos joined #scheme 2015-12-17T07:50:18Z nee` joined #scheme 2015-12-17T07:52:02Z daviid quit (Ping timeout: 265 seconds) 2015-12-17T08:01:06Z f-a quit (Ping timeout: 240 seconds) 2015-12-17T08:09:00Z lritter joined #scheme 2015-12-17T08:13:15Z sz0 joined #scheme 2015-12-17T08:16:29Z ASau quit (Ping timeout: 255 seconds) 2015-12-17T08:19:50Z lambda-11235 quit (Quit: Have to write some Scheme) 2015-12-17T08:23:51Z adu quit (Quit: adu) 2015-12-17T08:32:16Z wolfcore is now known as u 2015-12-17T08:32:21Z u is now known as wolfcore 2015-12-17T08:32:25Z alezost joined #scheme 2015-12-17T08:33:46Z wolfcore is now known as kx 2015-12-17T08:36:33Z kx is now known as wolfcore 2015-12-17T08:43:23Z bogdanm quit (Remote host closed the connection) 2015-12-17T08:50:15Z ec quit (Ping timeout: 240 seconds) 2015-12-17T08:50:28Z alezost quit (Read error: Connection reset by peer) 2015-12-17T08:51:00Z Neet quit (Ping timeout: 260 seconds) 2015-12-17T08:54:47Z Neet joined #scheme 2015-12-17T08:55:05Z ec joined #scheme 2015-12-17T09:00:03Z ecthiender quit (Quit: gotta go) 2015-12-17T09:00:15Z Neet quit (Ping timeout: 240 seconds) 2015-12-17T09:02:40Z ec quit (Ping timeout: 260 seconds) 2015-12-17T09:04:15Z Neet joined #scheme 2015-12-17T09:05:48Z micmus joined #scheme 2015-12-17T09:06:54Z stasku_ quit (Ping timeout: 255 seconds) 2015-12-17T09:11:02Z stasku_ joined #scheme 2015-12-17T09:12:08Z ec joined #scheme 2015-12-17T09:19:00Z stasku_ quit (Ping timeout: 260 seconds) 2015-12-17T09:21:02Z Neet quit (Ping timeout: 246 seconds) 2015-12-17T09:23:05Z ec quit (Ping timeout: 260 seconds) 2015-12-17T09:37:43Z ec joined #scheme 2015-12-17T09:38:20Z stasku_ joined #scheme 2015-12-17T09:41:25Z Neet joined #scheme 2015-12-17T09:52:34Z przl joined #scheme 2015-12-17T10:07:25Z przl quit (Ping timeout: 260 seconds) 2015-12-17T10:12:42Z pchrist joined #scheme 2015-12-17T10:14:38Z \var quit (Ping timeout: 256 seconds) 2015-12-17T10:29:54Z nanoz quit (Quit: <3) 2015-12-17T10:31:36Z ee_cc_ joined #scheme 2015-12-17T10:47:51Z cousteau joined #scheme 2015-12-17T10:49:32Z cousteau: let me get this right... when I write something like (+ 1 (* 2 3)) that's a list containing the elements +, 1, and (* 2 3) which is itself another list, right? 2015-12-17T10:49:42Z antoszka: yes 2015-12-17T10:51:22Z cousteau: And when I evaluate it, then both the 1 and the (* 2 3) are evaluated, but only because the + "command" says "in order to evaluate this list, you have to evaluate all the remaining elements of this list and then calculate their sum", right? 2015-12-17T10:53:43Z cousteau: i.e. it's not like when I do something like add(1, mult(2, 3)) in C, where the add() function has no way to know how the arguments were passed; they are evaluated and then passed to the function. In Scheme and other Lisps, the list are kept "as is" until they are explicitly required to be evaluated? 2015-12-17T10:53:54Z antoszka: nope 2015-12-17T10:54:00Z cousteau: ...damn 2015-12-17T10:54:22Z antoszka: in normal evaluation all the elements are evaluated from the leaves of the tree up 2015-12-17T10:54:55Z antoszka: only when you have special forms/macros (this could be a CL-specific term, not 100% sure of that applies to scheme) then certain parts of the tree might not be evaluated: 2015-12-17T10:54:58Z antoszka: as in: 2015-12-17T10:55:07Z antoszka: (if (foo) (bar) (baz)) 2015-12-17T10:55:18Z cousteau: hmm, I don't like that... 2015-12-17T10:55:19Z antoszka: assume that (bar) and (baz) cause side-effects 2015-12-17T10:55:49Z antoszka: if foo were a standard function: all three: FOO, BAR and BAZ would be evaluated (causing possible side-effects) 2015-12-17T10:55:57Z antoszka: and their return values would be passed to the if function 2015-12-17T10:56:03Z antoszka: but since if is a special form 2015-12-17T10:56:09Z antoszka: only BAR or BAZ will be evaluated 2015-12-17T10:56:12Z nanoz joined #scheme 2015-12-17T10:56:22Z antoszka: depending on whether the output of FOO is true or false 2015-12-17T10:56:23Z cousteau: so there are "special commands that are magical" and "regular functions"... damn, I don't like that too much 2015-12-17T10:56:27Z antoszka: yes. 2015-12-17T10:56:30Z antoszka: unfortunately. 2015-12-17T10:58:07Z neoncontrails joined #scheme 2015-12-17T10:59:41Z cousteau: in Tcl, for example, there's very little magic (or rather, everything is equally magical). Only, it relays in strings rather than lists. But things are either evaluated or are not; [if] and [for] are commands just like [puts] or any other; you could actually rewrite [if] the same way you write any custom command ("function"). 2015-12-17T11:00:08Z jackdaniel: cousteau: in lisp you can write your own special operators as well 2015-12-17T11:00:24Z jackdaniel: that's what's this macro fuss about 2015-12-17T11:00:33Z cousteau: yeah, I recently saw the (define-syntax) thing which I guess will be related to that 2015-12-17T11:01:18Z jackdaniel: generally it's also not that magical. Macros just operate at different time - at the time of compilation, not the run-time 2015-12-17T11:01:37Z antoszka: yep 2015-12-17T11:01:44Z cousteau: oh I see, so in a way they ARE like C macros 2015-12-17T11:01:51Z antoszka: well, no ;) 2015-12-17T11:02:07Z antoszka: C macros are textual replacements 2015-12-17T11:02:10Z antoszka: mostly 2015-12-17T11:02:26Z jackdaniel: if you consider only the time when they work, then yes. But macros are lisp functions, not a preprocessor 2015-12-17T11:02:27Z cousteau: they are like C macros in that they are compile time expressions; not sure how "smart" they are 2015-12-17T11:02:34Z jackdaniel: so you can use all the goods programming language provides 2015-12-17T11:02:35Z cousteau: C macros definitely aren't 2015-12-17T11:02:47Z cousteau: (aren't smart) 2015-12-17T11:03:01Z przl joined #scheme 2015-12-17T11:05:08Z cousteau: jackdaniel, so your point is that they are written in the same language as the rest, executed as a normal lisp function when the program is compiled/parsed, and replaced by their result? 2015-12-17T11:05:18Z jackdaniel: exactly 2015-12-17T11:08:20Z jackdaniel: however I might have introduced some wrong statement – special forms aren't macros 2015-12-17T11:08:24Z cousteau: so they'd be more like VHDL's (and probably Ada's) functions that only depend (directly or recursively) on constant parameters -- those can be used to initialize constants, for example, so you can go crazy with unsynthesizable functionality (file I/O, real math, logarithms...) and whatever you do will "stay in the computer", not end up as part of the synthesized design 2015-12-17T11:08:47Z cousteau: jackdaniel, ok 2015-12-17T11:11:07Z cousteau: VHDL example: signal a, b; a <= something; b <= a/3; -- not synthesizable! 2015-12-17T11:11:08Z jackdaniel: cousteau: macros are functions, but ran at a different time. They may depend on some parameters (ie variables) which are available at their run-time (that is compile-time of compiled entity) 2015-12-17T11:11:36Z cousteau: however constant a := something; b := a/3; -- totally fine! 2015-12-17T11:12:28Z jackdaniel: generally in lisp time of compilation and run-time are not clearly separated - you may compile things at the runtime (at least it's true for common lisp) 2015-12-17T11:12:55Z cousteau: ...also in C you can go rather crazy with macros that use constants and probably not end up with actual CPU instructions 2015-12-17T11:15:02Z jackdaniel: cousteau: I think that you should read some book going into these topics to avoid confusion (ie poor word choose, or even mistakes and wrong statements) 2015-12-17T11:17:08Z cousteau: example: #define CLK 16000000 #define TICKS(freq) ((int) ((double) CLK / freq - 1)) some_register = TICKS(261.63); will (likely) not involve any floating point operation at all, since the whole thing TICKS() will be replaced by can be calculated at compile time 2015-12-17T11:17:50Z cousteau: ...well, I guess I'll read about Scheme macros 2015-12-17T11:18:55Z jackdaniel: cousteau: you can compute some stuff and compilation time of course 2015-12-17T11:19:02Z jackdaniel: s/and/at/ 2015-12-17T11:19:52Z cousteau: yeah... well, in my previous C example if I did something like some_register = TICKS(some_variable) then stuff wouldn't be able to be calculated at compile time 2015-12-17T11:25:42Z cousteau: I wonder if there are "less magical" Lisp variants that are more homogeneous regarding forms / special forms / macros... Not sure if what I have in mind (a "purely functional language that does everything in a homogeneous way") can be feasibly implemented at all 2015-12-17T11:25:51Z cousteau: ...although I'd say Tcl is close 2015-12-17T11:27:50Z jackdaniel: cousteau: some special operators must exist in every language 2015-12-17T11:27:53Z jackdaniel: take if statement 2015-12-17T11:27:59Z jackdaniel: it can't evaluate *everything* 2015-12-17T11:28:24Z jackdaniel: I believe lisp is the closest to what you want to achieve, just don't write macros 2015-12-17T11:28:50Z jackdaniel: however you get rid of a great tool unique to this language 2015-12-17T11:35:47Z przl quit (Ping timeout: 246 seconds) 2015-12-17T11:38:54Z ee_cc_ quit (Quit: ee_cc_) 2015-12-17T11:44:46Z Neet quit (Ping timeout: 240 seconds) 2015-12-17T11:45:25Z stasku_ quit (Ping timeout: 260 seconds) 2015-12-17T11:45:35Z mmos quit (Ping timeout: 240 seconds) 2015-12-17T11:45:49Z nanoz quit (Quit: <3) 2015-12-17T11:53:00Z ec quit (Ping timeout: 260 seconds) 2015-12-17T12:04:40Z ec joined #scheme 2015-12-17T12:04:42Z ggole joined #scheme 2015-12-17T12:05:06Z Beluki joined #scheme 2015-12-17T12:05:42Z Neet joined #scheme 2015-12-17T12:09:50Z sz0 quit (Quit: Connection closed for inactivity) 2015-12-17T12:15:10Z ec quit (Ping timeout: 260 seconds) 2015-12-17T12:31:29Z ec joined #scheme 2015-12-17T12:34:40Z bogdanm joined #scheme 2015-12-17T12:38:53Z stasku_ joined #scheme 2015-12-17T12:43:48Z mbuf quit (Quit: Ex-Chat) 2015-12-17T12:47:40Z badkins joined #scheme 2015-12-17T13:03:44Z civodul joined #scheme 2015-12-17T13:04:39Z ee_cc_ joined #scheme 2015-12-17T13:06:27Z Neet_ joined #scheme 2015-12-17T13:06:32Z ec quit 2015-12-17T13:06:40Z Neet quit 2015-12-17T13:06:41Z Neet_ is now known as Neet 2015-12-17T13:07:03Z ec joined #scheme 2015-12-17T13:12:08Z stasku_ quit 2015-12-17T13:12:57Z stasku_ joined #scheme 2015-12-17T13:17:25Z davexunit joined #scheme 2015-12-17T13:18:00Z stasku__ joined #scheme 2015-12-17T13:18:01Z dytrivedi joined #scheme 2015-12-17T13:19:35Z dytrivedi quit (Client Quit) 2015-12-17T13:24:04Z przl joined #scheme 2015-12-17T13:27:11Z br0kenman joined #scheme 2015-12-17T13:32:08Z cousteau: jackdaniel, well, in the case of Tcl it's more like "all 'operators' are equally special" in that they can choose whether or not to evaluate their arguments 2015-12-17T13:33:02Z cousteau: getting rid of a great tool of a language wouldn't be a big concern for me since I want to learn a paradigm and explore ideas rather than learning Scheme specifically 2015-12-17T13:35:26Z cousteau: "Chapter 14 -- Nondeterminism" omg, NOW I'm scared. 2015-12-17T13:36:06Z cousteau: ...otoh, if I understand correctly what quantum computers are, this would make Scheme an excellent tool for those 2015-12-17T13:40:30Z cousteau: come to think of it, (amb) is something horribly complicated, hard to understand, and, unfortunately for me, probably very useful to learn in my quest for functional languages 2015-12-17T13:40:55Z przl quit (Ping timeout: 260 seconds) 2015-12-17T13:41:05Z saul: (amb) ?! 2015-12-17T13:41:13Z masoudd joined #scheme 2015-12-17T13:41:48Z cousteau: ...maybe that's some sort of dialectal Scheme 2015-12-17T13:41:59Z wasamasa: inb4 it's from On Lisp 2015-12-17T13:42:14Z wasamasa: schemers are less into weird macros 2015-12-17T13:43:28Z cousteau: saul, I was reading a Scheme tutorial and they say there's an (amb 1 2) can result in either 1 or 2. However, (amb) alone is erroneous. And the cool thing, (amb 1 (amb)) and (amb (amb) 1) both will ALWAYS produce 1, since they cannot produce the other option because it's erroneous 2015-12-17T13:44:06Z cousteau: it's something I'd expect from Haskell or even Prolog, rather than Lisps 2015-12-17T13:45:04Z cousteau: (hmm, it's not as hard as I thought actually) 2015-12-17T13:45:25Z saul: cousteau, basically your functions with unevaluated arguments are what used to be known as "fexprs". Early Lisp had them explicitly but they were eliminated about 20 years ago because they caused problems with optimizations. 2015-12-17T13:45:43Z cousteau: saul, oh I see! 2015-12-17T13:46:05Z cousteau: actually I'm more interested in paradigms than actual implementations so those might be useful for me 2015-12-17T13:48:25Z neoncontrails quit (Remote host closed the connection) 2015-12-17T13:49:30Z cousteau: I'm basically toying with the idea of how to implement a function/program as a digital circuit (this already exists; it's called "high level synthesis"). First thing I thought was that a purely functional, non-recursive/iterative language would be trivial to implement as a pipelined circuit. However that'd be a very limited and boring language. 2015-12-17T13:49:55Z wasamasa: did you just call arrowlisp boring?? 2015-12-17T13:50:18Z cousteau: So I started thinking "Hmm, how do ACTUAL functional programming languages handle this sort of thing?" and that's how I ended up deciding to learn Lisp. 2015-12-17T13:50:34Z wasamasa: rudybot: who needs constants anyways when there's symbols... 2015-12-17T13:50:35Z cousteau: wasamasa, it depends. Can arrowlisp calculate a factorial or a Fibonacci number? 2015-12-17T13:50:38Z rudybot: wasamasa: there's not really constants in elisp anyways 2015-12-17T13:50:52Z wasamasa: cousteau: of course, it's just reaaally painful to do 2015-12-17T13:51:11Z wasamasa: cousteau: because you don't have number literals 2015-12-17T13:51:12Z cousteau: well, as I understand it, it shouldn't be painful, it should be impossible 2015-12-17T13:51:16Z cousteau: oh 2015-12-17T13:51:24Z wasamasa: https://github.com/wasamasa/arrowlisp 2015-12-17T13:51:38Z wasamasa: I've mirrored it today because someone on ##lisp did ask whether anyone had seen a tarball 2015-12-17T13:51:49Z cousteau: I see 2015-12-17T13:52:03Z wasamasa: and finding it wasn't the easiest thing to do, so I decided to share it with you! 2015-12-17T13:52:18Z wasamasa: https://github.com/wasamasa/arrowlisp/blob/master/src/misc/fact.l 2015-12-17T13:52:52Z cousteau: so aside from the not-too-interesting fact that that language has no integer constants (well, it could be interesting, but not for me), does it not have loops or recursion either? 2015-12-17T13:53:04Z wasamasa: my favourite is https://github.com/wasamasa/arrowlisp/blob/master/src/misc/bottles.l though 2015-12-17T13:53:05Z cousteau: ...nah, it has letrec 2015-12-17T13:53:20Z wasamasa: "Numbers are represented by lists of digits." 2015-12-17T13:53:34Z wasamasa: because what you think is a number is actually a symbol :P 2015-12-17T13:53:56Z wasamasa: so you have to do fun things like implementing a really stupid pred function 2015-12-17T13:54:10Z cousteau: that's not a very complicated definition of number 2015-12-17T13:54:19Z wasamasa: no, just an impractical one 2015-12-17T13:54:44Z cousteau: this is: "0 is the empty set; any other natural number is the set of all numbers before it" 2015-12-17T13:54:53Z wasamasa: it's hard to believe people in the seventies and eighties thought this to be the solution to AI :D 2015-12-17T13:55:05Z wasamasa: "We have symbols, we can solve everything!" 2015-12-17T13:56:17Z cousteau: so 0 is {}; 1 is {0}, i.e. {{}}; 2 is {0,1}, i.e. {{},{{}}}; 3 is {0,1,2}, i.e. {{},{{}},{{},{{}}}}, and I won't continue because I already got lost at 3 2015-12-17T13:56:47Z cousteau: and as a funny note, I once *accidentally* wrote a Tcl program that generated that sequence 2015-12-17T13:56:57Z mmos joined #scheme 2015-12-17T13:58:06Z cousteau: instead of doing something like list1 = {}; for i in list2: append i to list1 I did append list1 to list1 2015-12-17T14:03:00Z cousteau: and BAM! That mistake generated a beautiful mathematical sequence of empty sets. I have to say I was surprised to get a known mathematical sequence by accident. 2015-12-17T14:04:14Z adu joined #scheme 2015-12-17T14:04:43Z adu quit (Client Quit) 2015-12-17T14:05:35Z cousteau: anyway, wasamasa, I think that's not what I was looking for; I said "purely functional and non-recursive/iterative", not "purely symbolic" 2015-12-17T14:06:01Z saul: cousteau, you might enjoy some of the blog archives of the following blog: http://kazimirmajorinc.blogspot.com/search?updated-min=2011-01-01T00:00:00%2B01:00&updated-max=2012-01-01T00:00:00%2B01:00&max-results=32 2015-12-17T14:06:01Z rudybot: http://teensy.info/sH1QMoR6m4 2015-12-17T14:07:35Z wasamasa: cousteau: it claims to be purely functional as well 2015-12-17T14:07:52Z cousteau: hmm 2015-12-17T14:08:05Z wasamasa: or no, "side-effect free" 2015-12-17T14:08:09Z wasamasa: that's different :P 2015-12-17T14:08:28Z cemerick joined #scheme 2015-12-17T14:08:40Z cousteau: indeed; a function can be impure without having side effects 2015-12-17T14:08:50Z cousteau: e.g. if it uses "global variables" 2015-12-17T14:09:00Z cousteau: or any other sort of state 2015-12-17T14:09:36Z cousteau: well, the first obstacle I found was that implementing either recursion or iteration was complicated, but you probably *need* one of the two for making most of the stuff 2015-12-17T14:10:21Z wasamasa: why? 2015-12-17T14:10:26Z wasamasa: iteration is essentially a goto 2015-12-17T14:10:57Z wasamasa: and recursion, well, keeping track of the context and doing another call 2015-12-17T14:11:04Z cousteau: Iteration makes the time or number of steps the program takes indeterminate, so it clashes with the "pipelined circuit" idea I had in mind. Plus it (probably) requires some sort of "jump back to position N", which makes sense for computers but not for circuits. 2015-12-17T14:12:16Z cousteau: Recursion provides a way to implement loops, BUT it requires you to have multiple copies of each variable... weird and hard to implement in hardware; probably easier to just implement iteration. 2015-12-17T14:14:06Z cousteau: ...then again, I guess I could do nice things even without allowing recursion, if I didn't care that "programs" have to "wait" 2015-12-17T14:16:08Z Mokuso joined #scheme 2015-12-17T14:20:25Z mbuf joined #scheme 2015-12-17T14:31:33Z przl joined #scheme 2015-12-17T14:33:12Z masoudd quit (Ping timeout: 265 seconds) 2015-12-17T14:34:40Z seg quit (Remote host closed the connection) 2015-12-17T14:35:01Z seg joined #scheme 2015-12-17T14:41:23Z mumptai quit (Quit: Verlassend) 2015-12-17T14:42:44Z neoncontrails joined #scheme 2015-12-17T14:43:20Z micmus quit (Ping timeout: 260 seconds) 2015-12-17T14:47:09Z turbopape joined #scheme 2015-12-17T14:48:32Z pierpa joined #scheme 2015-12-17T14:49:59Z fu7mu4 joined #scheme 2015-12-17T14:59:26Z dytrivedi joined #scheme 2015-12-17T14:59:40Z szgyg joined #scheme 2015-12-17T14:59:55Z stasku__ quit 2015-12-17T15:04:42Z neoncontrails quit (Remote host closed the connection) 2015-12-17T15:05:26Z przl quit (Ping timeout: 246 seconds) 2015-12-17T15:05:30Z jcowan joined #scheme 2015-12-17T15:06:08Z duggiefresh joined #scheme 2015-12-17T15:06:47Z dytrivedi quit (Read error: Connection reset by peer) 2015-12-17T15:08:57Z oleo joined #scheme 2015-12-17T15:08:58Z oleo quit (Changing host) 2015-12-17T15:08:58Z oleo joined #scheme 2015-12-17T15:09:35Z jcowan_ joined #scheme 2015-12-17T15:10:43Z dytrivedi joined #scheme 2015-12-17T15:12:46Z jcowan quit (Ping timeout: 240 seconds) 2015-12-17T15:13:48Z jcowan_ is now known as jcowan 2015-12-17T15:13:50Z NaNDude quit (Ping timeout: 246 seconds) 2015-12-17T15:15:54Z spew joined #scheme 2015-12-17T15:17:48Z dytrivedi quit (Ping timeout: 256 seconds) 2015-12-17T15:21:20Z dytrivedi joined #scheme 2015-12-17T15:21:45Z cemerick quit (Ping timeout: 255 seconds) 2015-12-17T15:24:05Z cross joined #scheme 2015-12-17T15:32:24Z dytrivedi quit (Quit: dytrivedi) 2015-12-17T15:34:38Z cemerick joined #scheme 2015-12-17T15:35:37Z ee_cc_ quit (Quit: ee_cc_) 2015-12-17T15:37:57Z przl joined #scheme 2015-12-17T15:41:07Z fu7mu4 quit (Remote host closed the connection) 2015-12-17T15:48:45Z masoudd joined #scheme 2015-12-17T15:49:19Z daviid joined #scheme 2015-12-17T15:53:18Z karswell` quit (Read error: Connection reset by peer) 2015-12-17T15:56:35Z cemerick quit (Ping timeout: 240 seconds) 2015-12-17T15:57:17Z Beluki quit (Quit: Beluki) 2015-12-17T15:59:38Z cemerick joined #scheme 2015-12-17T16:01:42Z psy_ joined #scheme 2015-12-17T16:06:38Z micmus joined #scheme 2015-12-17T16:07:49Z nee` quit (Read error: Connection reset by peer) 2015-12-17T16:09:26Z ggole quit 2015-12-17T16:28:25Z cousteau quit (Quit: WARNING: vhdl is not supported as a language. Using usenglish.) 2015-12-17T16:30:32Z NaNDude joined #scheme 2015-12-17T16:41:14Z Mokuso quit (Quit: EOF) 2015-12-17T16:41:17Z civodul quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2015-12-17T16:42:57Z karswell` joined #scheme 2015-12-17T16:50:26Z lritter quit (Ping timeout: 246 seconds) 2015-12-17T16:58:26Z karswell` quit (Read error: Connection reset by peer) 2015-12-17T17:00:37Z masoudd quit (Quit: May your strings always be '\0' terminated.) 2015-12-17T17:01:41Z karswell` joined #scheme 2015-12-17T17:07:06Z karswell` is now known as karswell 2015-12-17T17:07:45Z turbopape quit (Quit: Quitte) 2015-12-17T17:07:45Z \var joined #scheme 2015-12-17T17:14:06Z stepnem joined #scheme 2015-12-17T17:22:58Z dbohdan_ is now known as dbohdan 2015-12-17T17:29:46Z jcowan_ joined #scheme 2015-12-17T17:30:13Z lambda-11235 joined #scheme 2015-12-17T17:30:24Z gravicappa joined #scheme 2015-12-17T17:32:55Z fantazo joined #scheme 2015-12-17T17:33:14Z jcowan quit (Ping timeout: 256 seconds) 2015-12-17T17:37:41Z br0kenman quit (Quit: q) 2015-12-17T17:44:24Z przl quit (Ping timeout: 255 seconds) 2015-12-17T17:45:17Z jcowan__ joined #scheme 2015-12-17T17:45:25Z akkad joined #scheme 2015-12-17T17:46:26Z duggiefresh quit (Remote host closed the connection) 2015-12-17T17:46:36Z nilg quit (Read error: Connection reset by peer) 2015-12-17T17:48:26Z jcowan_ quit (Ping timeout: 240 seconds) 2015-12-17T18:08:35Z \var quit (Ping timeout: 240 seconds) 2015-12-17T18:08:49Z mbuf quit (Quit: Ex-Chat) 2015-12-17T18:12:53Z neoncontrails joined #scheme 2015-12-17T18:15:24Z duggiefresh joined #scheme 2015-12-17T18:47:19Z amz3 joined #scheme 2015-12-17T18:47:32Z amz3: héllo schemers! 2015-12-17T18:47:58Z amz3: does anyone has feedback to do on biwascheme? 2015-12-17T18:48:04Z amz3: http://www.biwascheme.org/ 2015-12-17T18:48:26Z amz3: I intend to use for a non trivial project, I'd like to know if they are any known road blockers 2015-12-17T18:49:20Z turbopape joined #scheme 2015-12-17T18:55:12Z _leb joined #scheme 2015-12-17T18:59:15Z daviid: amz3: maybe you should consider Kawa 2015-12-17T18:59:24Z sethalves joined #scheme 2015-12-17T19:01:02Z cojy: amz3: it's slow and i think it doesn't have macros? 2015-12-17T19:01:24Z daviid: amz3: if you need scheme on top of java, for a serious project, use kawa 2015-12-17T19:01:47Z mario-goulart: daviid: does Kawa compile to JavaScript? 2015-12-17T19:02:03Z amz3: it's for doing browser stuff not java, I have Guile to do Java stuff :) 2015-12-17T19:02:31Z amz3: yes biwascheme doesn't have macros :( 2015-12-17T19:02:36Z daviid: mario-goulart: don't know if this is a strict requirement for amz3, and I don't know if kawa does, you would know better then I I guess :) 2015-12-17T19:03:26Z mario-goulart: I really don't know. I _think_ it doesn't, but since you suggested it, maybe things changed. :-) 2015-12-17T19:04:00Z daviid: I don't know 2015-12-17T19:04:09Z mario-goulart: ok 2015-12-17T19:05:45Z mario-goulart: amz3: I think gambit has a javascript backend, and there's spock for CHICKEN. 2015-12-17T19:06:57Z jcowan__ is now known as jcowan 2015-12-17T19:07:29Z jcowan: Biwa is an interpreter, whereas Spock is a compiler, so Spock will be much faster. 2015-12-17T19:12:12Z turbopape quit (Remote host closed the connection) 2015-12-17T19:13:53Z tessier quit (Read error: Connection reset by peer) 2015-12-17T19:32:26Z pjb: jcowan: really? So Spock won't spend hundreds of milliseconds to compile a program, before executing it. It will start executing the program before the interpreter? My EYE! 2015-12-17T19:32:45Z przl joined #scheme 2015-12-17T19:37:08Z jcowan: pjb's eye: You misunderstand me. Spock compiles Scheme to JS offline. Biwa is a classical interpreter that happens to be written in JS. 2015-12-17T19:38:03Z pjb: jcowan: I know. I complain about the unqualified "faster". 2015-12-17T19:38:19Z \var joined #scheme 2015-12-17T19:38:27Z jcowan: In a JS context, surely what happens offline (minification etc.) does not count against speed. 2015-12-17T19:38:29Z pjb: What's faster is running the compiled code vs. running the interpreted code. But compilation takes time. 2015-12-17T19:39:03Z pjb: So Spock is a batch offline compiler, not a in-line interactive compiler. 2015-12-17T19:39:23Z pjb: Do they plan to update to webassembly? 2015-12-17T19:39:59Z mario-goulart: Is webassembly even a thing? 2015-12-17T19:40:00Z jcowan: I have no idea; I have nothing to do with Spock, which is not really part of Chicken (it's implemented with Chicken, but that's all) 2015-12-17T19:40:25Z jcowan: A more reasonable question at this point was whether it can be made to generate asm.js. It surely doesn't now. 2015-12-17T19:40:52Z pjb: ok 2015-12-17T19:41:19Z jcowan: Actually, counting offline compile time against program speed isn't sensible in any context. Otherwise we'd say that Stalin is a mechanism for immensely slowing down your Scheme programs. 2015-12-17T19:41:50Z jcowan: WHich is certainly true if you run them only once. 2015-12-17T19:42:26Z pjb: well, when you program in lisp, either interactively, or with run-time code generation, this matters. 2015-12-17T19:42:28Z mario-goulart: Also C programs. 2015-12-17T19:42:52Z jcowan nods. 2015-12-17T19:43:08Z pjb: This is why a lot of implementations actually have both an interpreter and a compiler (sometimes even multiple compilers, including a byte-code compiler with a byte-code VM, in addition to a native code compiler). 2015-12-17T19:43:09Z jcowan: pjb: But in neither case is that offline. 2015-12-17T19:43:18Z pjb: Yes. 2015-12-17T19:43:19Z taylan: shameless advertisement: GNU Guix, the "purely functional" package manager and whole-OS (GNU/Linux) configuration/deployment tool written in Guile Scheme is taking donations for new servers https://my.fsf.org/civicrm/contribute/transact?reset=1&id=50 2015-12-17T19:44:15Z jcowan: taylan: hey ho 2015-12-17T19:44:33Z turtleman_ joined #scheme 2015-12-17T19:44:34Z taylan: hi :) 2015-12-17T19:48:01Z jcowan: I wish I could figure out what to do with publicly exposed hash functions with respect to bounds and salt. 2015-12-17T19:48:52Z jcowan: Will Clinger argues, I think rightly, that it does not make sense either to force a hf to accept a bound (as the SRFI 69 ref impl does), nor is it even very useful to the framework to pass a bound, as not all hfs will respect it anyway. 2015-12-17T19:49:15Z jcowan: OTOH, hash functions should respect salt, but it's unclear how to pass it in a way that works cleanly with exposed hash functions. 2015-12-17T19:49:35Z gravicappa quit (Ping timeout: 260 seconds) 2015-12-17T19:50:44Z jcowan: To pass salt as a second argument would make sense if the world weren't already polluted with the assumption that second arguments are bounds. 2015-12-17T19:53:05Z C-Keen: does it have to be api compatible in any way? 2015-12-17T19:54:53Z jcowan: We have two candidates for hash tables, SRFI 69/125 and R6RS/SRFI 126. We also have SRFI 128, on which 125 depends, and which is about exposed hash functions. 2015-12-17T19:56:04Z jcowan: SRFI 69 does not require that hfs accept a second argument, but the sample implementation (used by Chicken among others) actually does. In R6RS there is no second argument. 2015-12-17T19:57:02Z jcowan: But the concern is that people who want to write portable hfs have written them to work in SRFI 69 as implemented (though not all implementations use the sample implementation) and make them accept a second arg which they either interpret as bounds or ignore altogether. 2015-12-17T19:57:15Z jcowan: It's a social, not a technical problem. In short, the Lisp Curse has struck! 2015-12-17T20:00:17Z C-Keen: I don't see a good compatible way of fixing this, unless you are willing to introduce keyword arguments (which I think is not really portable either is it?) 2015-12-17T20:00:52Z jcowan: No, they aren't. 2015-12-17T20:01:26Z C-Keen: so what are the other options? 2015-12-17T20:01:49Z jcowan: Possible hacks are to use a parameter for current-salt, but you have to be very careful that if you call a hash function anywhere near hash table operations, that it is properly restored, or the hash table won't be searchable. 2015-12-17T20:02:09Z jcowan: Another idea is to allow salt to be set once per process only, which eliminates some of its more interesting uses. 2015-12-17T20:02:47Z ASau joined #scheme 2015-12-17T20:02:47Z C-Keen: especially when implementing somehting like bcrypt 2015-12-17T20:02:51Z LeoNerd: Perl a few years ago spent quite some time studying security/etc.. implications of the ways that internal hashing works... might be some discussiosn there worth reading 2015-12-17T20:04:20Z C-Keen: jcowan: hm srfi 128 depends on srfi 125? 2015-12-17T20:04:38Z jcowan: No, vice versa 2015-12-17T20:04:59Z C-Keen: I see 2015-12-17T20:05:03Z jcowan: LeoNerd: However, Perl doesn't expose hash functions for public use 2015-12-17T20:05:20Z jcowan: The original design used SRFI 114, but 128 is the replacement for 114. 2015-12-17T20:05:35Z LeoNerd: jcowan: Not /directly/, but the security properties of them are important because that's how the core associative data structure works 2015-12-17T20:05:46Z jcowan: Oh yes. 2015-12-17T20:06:20Z jcowan: But there is no need to juggle different salts for different hashes, as you do in bcrypt, or if you want a distinct salt for each hash table. 2015-12-17T20:06:44Z jcowan: (And expect existing hash tables to work correctly.) 2015-12-17T20:07:03Z LeoNerd: Ahh.. that kind of hash 2015-12-17T20:09:12Z karswell quit (Read error: Connection reset by peer) 2015-12-17T20:09:25Z karswell joined #scheme 2015-12-17T20:09:26Z przl quit (Ping timeout: 240 seconds) 2015-12-17T20:13:42Z jcowan: Yeah, that's why I'm careful to talk of hash tables and hash functions (hfs), never just hashes 2015-12-17T20:13:51Z jcowan: or, well, a hash is the result of calling a hash function 2015-12-17T20:24:30Z przl joined #scheme 2015-12-17T20:30:25Z przl quit (Ping timeout: 260 seconds) 2015-12-17T20:32:45Z mmos quit (Ping timeout: 260 seconds) 2015-12-17T20:47:05Z Beluki joined #scheme 2015-12-17T20:48:47Z civodul joined #scheme 2015-12-17T20:56:22Z nilg joined #scheme 2015-12-17T20:57:09Z nilg quit (Remote host closed the connection) 2015-12-17T20:57:19Z lambda-11235 quit (Quit: Have to write some Scheme) 2015-12-17T21:01:15Z amz3 quit (Quit: WeeChat 1.3) 2015-12-17T21:02:19Z Beluki quit (Quit: Beluki) 2015-12-17T21:08:05Z daviid quit (Ping timeout: 265 seconds) 2015-12-17T21:09:18Z scoofy joined #scheme 2015-12-17T21:15:07Z oleo_ joined #scheme 2015-12-17T21:17:29Z oleo quit (Ping timeout: 246 seconds) 2015-12-17T21:28:40Z lambda-11235 joined #scheme 2015-12-17T21:30:09Z neoncontrails quit (Remote host closed the connection) 2015-12-17T21:36:33Z przl joined #scheme 2015-12-17T21:41:06Z przl quit (Ping timeout: 255 seconds) 2015-12-17T21:42:09Z neoncontrails joined #scheme 2015-12-17T21:46:56Z hiroakip joined #scheme 2015-12-17T21:53:49Z davexunit quit (Quit: Later) 2015-12-17T21:58:18Z hiroakip quit (Quit: Ex-Chat) 2015-12-17T22:03:08Z cemerick quit (Ping timeout: 255 seconds) 2015-12-17T22:10:53Z lritter joined #scheme 2015-12-17T22:14:18Z fantazo quit (Ping timeout: 265 seconds) 2015-12-17T22:15:35Z lritter quit (Remote host closed the connection) 2015-12-17T22:18:13Z _leb quit (Quit: Computer has gone to sleep.) 2015-12-17T22:32:13Z spew quit (Quit: leaving) 2015-12-17T22:47:24Z micmus quit (Quit: Leaving) 2015-12-17T22:51:55Z civodul quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2015-12-17T22:58:27Z aeth quit (Ping timeout: 260 seconds) 2015-12-17T22:59:13Z aeth joined #scheme 2015-12-17T23:20:10Z szgyg quit (Ping timeout: 260 seconds) 2015-12-17T23:20:36Z jcowan quit (Ping timeout: 256 seconds) 2015-12-17T23:30:29Z stepnem quit (Ping timeout: 246 seconds) 2015-12-17T23:48:19Z leb joined #scheme 2015-12-17T23:48:22Z fantazo joined #scheme 2015-12-17T23:48:24Z duggiefresh quit (Remote host closed the connection) 2015-12-17T23:48:25Z fantazo quit (Read error: Connection reset by peer)