00:01:05 CADD [~CADD@12.227.104.109] has joined #scheme 00:01:07 -!- CADD [~CADD@12.227.104.109] has quit [Client Quit] 00:01:45 -!- ASau [~user@p54AFEE4D.dip0.t-ipconnect.de] has quit [Ping timeout: 265 seconds] 00:03:53 -!- karswell [~user@84.93.180.60] has quit [Ping timeout: 272 seconds] 00:08:23 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #scheme 00:18:18 karswell [~user@84.93.180.60] has joined #scheme 00:22:51 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/] 00:48:49 alexei [~amgarchin@p4FD60383.dip0.t-ipconnect.de] has joined #scheme 00:52:56 -!- wbooze [~wbooze@xdsl-78-35-133-3.netcologne.de] has quit [Read error: Connection reset by peer] 19:58:12 ccl-logbot [~ccl-logbo@setf.clozure.com] has joined #scheme 19:58:12 19:58:12 -!- names: ccl-logbot wingo BW^- hiroakip Ayey taylanub emma dzhus MichaelRaskin jao` oxum theseb ijp arubincloud annodomini_ towodo Riastradh Fare mgodshall tcsc oleo ASau` araujo stamourv davexunit leppie mikeI scoofy [Pete_27] chengox dRbiG wuehlmaus stepnem jewel_ ebzzry ggrant karswell mornfall peterhil nisstyre clog Giomancer cdidd amoe_ sad0ur_ klltkr ec fikusz_ Khisanth tessier githogori aeth ft offby1 pcarrier gazoombo samth noobboob marsam ggherdov 19:58:12 -!- names: kwmiebach_ qu1j0t3 arrdem pjdelport Kruppe ivan\ pjb Sgeo joneshf-laptop chrisirc hellome gluegadget joast omefire1 superjudge effy ski nicdev sethalves xian Kneferilis defanor greghendershott heath zbigniew speckle stamourv` cross arbscht gnomon turbofail kilimanjaro robot-beethoven mmc zacts bernalex finnrobi mario-goulart cky kbtr copumpkin zarul aap_ cmatei acieroid antoszka hive-mind rudybot fadein certainty ohama copec AlterSid SHODAN Kabaka Razz 19:58:12 -!- names: evhan jyc edw SirDayBat epsylon `^_^v tsuyoshi_ tali713 pchrist andares ineiros LeoNerd dpk CADD_ wilfredh bicgena dan64 sung juanfra Natch stephe_ ecraven Blkt SwashBuckla ada2358 cataska inarru minsa4 aoh tenq yosafbridge gabot acarrico sigjuice ozzloy asumu shivani_ gf3 Saeren haroldwu C-Keen waxysubs DerGuteMoritz Nshag jkraemer slowpoke mrowe_away micro choas_ eMBee jrslepak twem2 felipe z0d cibs iron_houzi m4burns fizzie duncanm elly 20:12:51 notthemessiah [~castthesh@pool-71-185-132-22.phlapa.east.verizon.net] has joined #scheme 20:21:47 jar [~jar@209-6-114-78.c3-0.arl-ubr1.sbo-arl.ma.cable.rcn.com] has joined #scheme 20:24:43 przl [~przlrkt@p5DD152DF.dip0.t-ipconnect.de] has joined #scheme 20:29:25 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #scheme 20:33:21 -!- jar [~jar@209-6-114-78.c3-0.arl-ubr1.sbo-arl.ma.cable.rcn.com] has quit [Quit: Colloquy for iPhone - http://colloquy.mobi] 20:45:41 -!- hiroakip [~hiroaki@77-20-51-63-dynip.superkabel.de] has quit [Ping timeout: 245 seconds] 20:46:28 hiroakip [~hiroaki@77-20-51-63-dynip.superkabel.de] has joined #scheme 20:46:46 ijp: yes but (quote foo) and (quasiquote foo) themselves may both eval to the same thing of there are no commas in foo right? 20:48:24 ijp: do ''foo and ``foo *are* equivalent for some def of equivalent 20:48:26 -!- przl [~przlrkt@p5DD152DF.dip0.t-ipconnect.de] has quit [Quit: leaving] 20:53:23 ijp : you shouldn't mutate a '(5 6) 20:53:52 -!- notthemessiah [~castthesh@pool-71-185-132-22.phlapa.east.verizon.net] has quit [Quit: Leaving] 20:54:01 theseb : they (the former) are still different as values 20:54:26 ski: whoa....wait...... ''4 and ``4 both eval to 4 right? 20:54:34 nope 20:54:37 ski: same with ``(4 6) and ''(4 6) ? 20:54:38 no? 20:54:39 ug 20:54:42 rudybot: eval ''4 20:54:42 ski: your sandbox is ready 20:54:42 ski: ; Value: ''4 20:54:49 bah 20:54:59 ski: rudybot is not scheme don't forget 20:55:02 #;1> ''4 20:55:03 guile would be better 20:55:04 (quote 4) 20:55:06 #;2> ``4 20:55:08 (quasiquote 4) 20:55:30 rudybot: eval (car ''4) 20:55:31 Riastradh: your sandbox is ready 20:55:31 Riastradh: ; Value: 'quote 20:55:34 rudybot: eval (cdr ''4) 20:55:34 Riastradh: ; Value: '(4) 20:55:40 *ski* still don't know how to make rudybot report in `write' form rather than in constructor form 20:55:44 theseb: I'd sitll call Racket Scheme, I don't know of it deviating from the standards that much more than other implementations ... 20:55:48 rudybot: eval (car ``4) 20:55:49 Riastradh: ; Value: 'quasiquote 20:55:57 ski: ``4 gives (quasiquote 4) and ''4 gives (quote 4) 20:56:45 theseb : let's use the symbol `~>' to denote that one expression can be simplified (reduced) in one step to another expression 20:56:57 ok 20:57:05 rudybot: eval (list->vector ''4) 20:57:05 Riastradh: ; Value: '#(quote 4) 20:57:09 rudybot: eval (list->vector ``4) 20:57:09 Riastradh: ; Value: '#(quasiquote 4) 20:57:17 theseb : and the symbol `=>' to denote that one expression evaluates to a value, where a value here is *not* a special case of an expression 20:57:54 sheilong [~sabayonus@unaffiliated/sheilong] has joined #scheme 21:07:19 theseb : then we may have e.g. : 21:07:41 (car (cdr (list 0 [list 1]))) 21:07:58 ~> (car (cdr (list 0 (cons 1 [list])))) 21:08:14 ~> (car (cdr [list 0 (cons 1 '())])) 21:08:31 ~> (car (cdr (cons 0 [list (cons 1 '())]))) 21:08:52 ~> (car (cdr (cons 0 (cons (cons 1 '()) [list])))) 21:09:03 ~> (car [cdr (cons 0 (cons (cons 1 '()) '()))]) 21:09:30 ~> [car (cons (cons 1 '()) '())] 21:09:38 ~> (cons 1 '()) 21:10:32 where i've taken the liberty to use square rather than round brackets for the combinations that are about to get reduced (aka redexes) in the next reduction 21:10:46 so, the normal form is (cons 1 '()) 21:11:45 where '() and (cons ... ...) are primitive constructions for values that won't be reduced any more (on their own. combined with a `car' or `cdr' wrapping them is another thing) 21:12:09 so, all the above things are expressions 21:12:47 however, if you use the `=>' notation, then you'd associate with an expression a *value* that it (eventually) evaluates to 21:12:53 so here we'd have 21:13:13 (car (cdr (list 0 [list 1]))) => (1 . ()) 21:13:49 the notation for expression is different from (but still in general way resembles) the notation for values 21:14:31 the final, normalized expression anove in the reduction chain *represents* the same value as the value notated just above as the result of evaluating the original expression 21:15:08 traditionally, Lisp systems (afaik) have tended to write out final results using the value notation, not the expression notation 21:15:32 dsmith [~dsmith@cpe-184-56-129-232.neo.res.rr.com] has joined #scheme 21:15:46 however, rudybot above (which is using Racket) is writing out the final result of reducing an expression (i.e. the value that you get by evaluating it) in *expression* notation 21:16:24 so, the first thing to keep in mind is this distinction between notated expressions and notated values 21:17:02 the expression ''4 is just syntactic sugar (iow shorthand) for the expression (quote (quote 4)) 21:17:36 and similarly the expression ``4 is just syntactic sugar for the expression (quasiquote (quasiquote 4)) 21:18:57 we (more or less, at least) have (quote (quote 4)) ~> ... ~> (cons (quote quote) (cons 4 '())) 21:19:52 well, i should say (quote (quote 4)) ~> ... ~> (cons (quote quote) (cons 4 (quote ()))) i suppose 21:20:10 and similarly, we have (quasiquote (quasiquote 4)) ~> ... ~> (cons (quote quasiquote) (cons 4 (quote ()))) 21:20:23 jar [~jar@209-6-114-78.c3-0.arl-ubr1.sbo-arl.ma.cable.rcn.com] has joined #scheme 21:20:43 (quote ()) is the normal form for the expression denoting the empty list 21:20:58 (quote quote) is the normal form for the expression denoting the symbol named quote 21:21:06 (quote quasiquote) is the normal form for the expression denoting the symbol named quasiquote 21:21:13 (quote oerjan) is the normal form for the expression denoting the symbol named oerjan 21:21:16 and so on 21:21:46 however, if we write the above reduction processes as evaluations, we get 21:22:08 (quote (quote 4)) => (quote . (4 . ())) 21:22:29 -!- Riastradh [~riastradh@fsf/member/riastradh] has quit [Ping timeout: 240 seconds] 21:22:30 (quasiquote (quasiquote 4)) => (quasiquote . (4 . ())) 21:23:01 in the former case, the resulting value here includes the symbol named quote while in the latter case, it includes the symbol named quasiquote 21:23:15 juxovec [~juxovec@ip-89-177-53-194.net.upcbroadband.cz] has joined #scheme 21:23:47 now, how will an expression '... iow (quote ...) in general behave ? 21:24:30 this is a very one-sided conversation it seems 21:24:38 well, it so happens that the behaviour of this expression is to *switch* from reading expression notation, to reading value notation, inside the ... form 21:24:51 *ski* is soon done 21:25:51 wingo: a one-sided conversation with ski (and likely yourself) can be quite stimulating! 21:26:08 "Damn! You got me monologuing!" -- Buddy 21:26:54 one of the interesting, and in some contexts quite nice things about Lisps is this similarity between expression and value notation, which enables one to, so to speak, directly embed a value into an expression, using quote 21:27:02 *wingo* didn't mean to stifle conversation in a quiet channel; sorry 'bout that :) 21:27:28 kobain [~sambio@unaffiliated/kobain] has joined #scheme 21:27:40 but it can also be confusing to the newbie, if they don't understand the difference between the (similar looking) expression and value notations 21:28:05 -!- hive-mind [pranq@unaffiliated/contempt] has quit [Ping timeout: 248 seconds] 21:28:06 .. or if they happen to switch between interactors that employ value respectively expression notation for results of computations 21:28:45 btw, note that in the value notation, there's some shorthand 21:29:07 (a . (b . (c . ()))) 21:29:13 can be abbreviated as 21:29:17 (a b c) 21:29:18 and 21:29:36 (a . (b . (c . d))) 21:29:37 as 21:29:42 (a b c . d) 21:30:08 -!- jar [~jar@209-6-114-78.c3-0.arl-ubr1.sbo-arl.ma.cable.rcn.com] has quit [Quit: Colloquy for iPhone - http://colloquy.mobi] 21:30:18 so, this tell us how we could possibly represent the abstract syntax tree of an expression as a value 21:30:29 and this is used for meta programming, including macros 21:30:59 hive-mind [pranq@unaffiliated/contempt] has joined #scheme 21:31:54 *ski* probably didn't say anything that isn't wellknown to people who are reasonably familiar with Lisps 21:32:24 but i was thinking theseb might benefit from having it spelled out 21:32:45 theseb : any comment ? 21:33:02 ski: still reading 21:33:03 sec 21:36:25 ski: right, you shouldn't mutate it, but in practice.... 21:36:28 ski: is that standard nomenclature...."value notation" and "expresion notation"? 21:36:49 ski: value notation = after eval and expression notation = before eval right? 21:37:35 theseb : i don't think it's standard nomenclature 21:37:48 theseb : yes 21:37:58 and expression notation both before and after a reduction step 21:41:01 in Racket docs at they call them more or less "expression"/"Constructor" (for what i called expression notation) and "write" (for what i called value notation) 21:42:10 Riastradh [~riastradh@fsf/member/riastradh] has joined #scheme 21:42:18 -!- Ayey [~rune1@2-106-141-211-dynamic.dk.customer.tdc.net] has quit [Quit: Leaving] 21:42:33 (the point of the "Constructor" form there (and actually also the "Quasiquote" form) is that these forms can be directly interpreted as expressions, which evaluate to the same value as the notated form denotes -- they're just two different styles of notating that) 21:43:02 ski: on another note.. are you one of those lisp gurus that write DSLs to avoid writing php/objC/Java? 21:43:40 haha 21:43:52 -!- wingo [~wingo@37.163.224.62] has quit [Ping timeout: 265 seconds] 21:44:02 One need not write DSLs to avoid writing PHP, Objective-C, or Java... One can just avoid those worlds altogether! 21:44:10 Riastradh: yeah, that's what I was about to say. 21:44:18 i don't consider myself a Lisp guru, but i could certainly consider using or even implementing such DSLs, if i'm currently using some Lisp system anyway 21:44:47 -!- jewel_ [~jewel@105-237-57-213.access.mtnbusiness.co.za] has quit [Read error: Operation timed out] 21:45:31 theseb: Lisp is only one advanced language family that avoids imperative C-ish horror. There is also the ML family, lesser known apparently. 21:46:02 C is an entirely different beast from PHP, Objective-C, and Java, all of which are entirely different beasts of their own. 21:46:14 however, there are parallels in syntax and paradigm. 21:46:52 Only cosmetic, really. 21:47:07 well, all those named are imperative. 21:47:33 and all inherit big swathes of C syntax. 21:47:45 *shrug* I dunno, I think for the most part writing imperative code in Java is just as painful as writing functional code in Java. 21:47:52 certainly. 21:48:14 some of the stuff i use makes java look great, though. :) 21:51:26 -!- MichaelRaskin [~MichaelRa@195.91.224.161] has quit [Ping timeout: 245 seconds] 21:58:45 aranhoide [~aranhoide@69.Red-83-57-126.dynamicIP.rima-tde.net] has joined #scheme 21:59:01 -!- juxovec [~juxovec@ip-89-177-53-194.net.upcbroadband.cz] has quit [Remote host closed the connection] 22:00:27 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/] 22:01:47 iemejia [~ismael@xbn44-2-82-225-226-66.fbx.proxad.net] has joined #scheme 22:04:20 -!- mgodshall [~mgodshall@8.20.30.249] has quit [Quit: mgodshall] 22:05:09 bars0 [~Name@87.106.107.151] has joined #scheme 22:06:52 -!- iemejia is now known as jamasv 22:25:09 -!- dzhus [~dzhus@95.31.27.234] has quit [Remote host closed the connection] 22:28:42 _danb_ [~user@203.29.131.142] has joined #scheme 22:33:37 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #scheme 22:42:01 juxovec [~juxovec@ip-89-177-53-194.net.upcbroadband.cz] has joined #scheme 22:45:54 -!- mrowe_away is now known as mrowe 22:46:28 -!- juxovec [~juxovec@ip-89-177-53-194.net.upcbroadband.cz] has quit [Ping timeout: 240 seconds] 22:50:02 -!- jao` [~jao@pdpc/supporter/professional/jao] has quit [Ping timeout: 264 seconds] 22:58:54 -!- Riastradh [~riastradh@fsf/member/riastradh] has quit [Remote host closed the connection] 22:59:06 Riastradh [~riastradh@fsf/member/riastradh] has joined #scheme 23:13:13 -!- oleo [~oleo@xdsl-78-35-181-44.netcologne.de] has quit [Read error: Connection reset by peer] 23:13:49 alexei [~amgarchin@p4FD626EC.dip0.t-ipconnect.de] has joined #scheme 23:14:20 -!- Fare [~fare@cpe-72-229-109-116.nyc.res.rr.com] has quit [Ping timeout: 252 seconds] 23:20:59 -!- hiroakip [~hiroaki@77-20-51-63-dynip.superkabel.de] has quit [Ping timeout: 240 seconds] 23:24:40 oleo [~oleo@xdsl-78-35-181-44.netcologne.de] has joined #scheme 23:31:52 -!- mrowe is now known as mrowe_away 23:35:33 -!- jamasv [~ismael@xbn44-2-82-225-226-66.fbx.proxad.net] has quit [Ping timeout: 248 seconds] 23:37:59 -!- ebzzry [~ebzzry@112.204.28.168] has quit [Ping timeout: 252 seconds] 23:42:38 juxovec [~juxovec@ip-89-177-53-194.net.upcbroadband.cz] has joined #scheme 23:43:35 -!- BW^- [~Miranda@unaffiliated/bw-/x-2460362] has quit [Quit: Miranda IM! Smaller, Faster, Easier. http://miranda-im.org] 23:44:48 -!- mrowe_away is now known as mrowe 23:46:58 -!- juxovec [~juxovec@ip-89-177-53-194.net.upcbroadband.cz] has quit [Ping timeout: 240 seconds] 23:50:21 Fare [~fare@cpe-72-229-109-116.nyc.res.rr.com] has joined #scheme 23:53:28 -!- arubincloud [uid489@gateway/web/irccloud.com/x-pbzbqjqnifoxciou] has quit [] 23:58:04 ASau`` [~user@p54AFF586.dip0.t-ipconnect.de] has joined #scheme