< 1200355459 0 :CoffeeMaker!n=CoffeeMa@125-236-169-77.broadband-telecom.global-gateway.net.nz JOIN :#esoteric < 1200355459 0 :CoffeeMaker!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is making a decaf espresso orange juice with an infinite number of sugars in a bathtub with a goat in it for this channel < 1200355464 0 :CoffeeMaker!unknown@unknown.invalid PRIVMSG #esoteric :ACTION spills the channel's coffee into a Magnetic Laser Device < 1200355464 0 :CoffeeMaker!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gives everyone in this channel a magnetic decaf espresso orange juice with an infinite number of sugars in a bathtub with a goat in it which is emitting lots of blue light and a barely audible hum < 1200355467 0 :CoffeeMaker!unknown@unknown.invalid PART #esoteric :? < 1200355471 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :okay. < 1200355473 0 :immibis!unknown@unknown.invalid PRIVMSG #esoteric :!!! < 1200355479 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :immibis: you did this. < 1200355487 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Internet < 1200355694 0 :immibis!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: ? < 1200355778 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :re: CoffeeMaker < 1200355846 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Behold: I have made lisp an esolang. < 1200355847 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def acc [{++ _}]) < 1200355857 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Paul Graham would be proud of my, er, 'terseness'. < 1200355866 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1200355901 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def acc [{++ _}]) -> (def acc (lambda (_) {++ _})) -> (def acc (lambda (_) (lambda a (apply ++ (cons _ a))) < 1200355917 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ergo, acc is roughly: (def acc (lambda (n) (lambda (x) (++ n x)))) < 1200355925 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::-O < 1200355932 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{..} is partial application, and [...] a lambda with _ meaning 'the next argument' < 1200355962 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :[+ _ _] is a + that only takes two arguments ;) < 1200355967 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :couldn't you just add implicit lambdas + *currying*? < 1200355978 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: 0-arg functions, var-arg functions < 1200355987 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :that's a minority. < 1200355990 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :0-args can be replaced with thunks, va-arg is more problematic < 1200355991 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and no < 1200355995 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :va-args are very common in lisp land. < 1200356011 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :+infix... < 1200356019 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :just have [] currying then < 1200356021 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*be < 1200356022 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1200356031 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Hmm, I could possibly replace (def acc [{++ _}]) with (= acc [{++ _}]), but then i couldn't use = for setf like crazy-Arc does. < 1200356034 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :asdf. < 1200356039 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :and drop tose paranthesis < 1200356043 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def acc [{++ _}]) seems like the best blend of obfuscation and readability to me ;) < 1200356048 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :;p < 1200356050 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :compare to the scheme: < 1200356051 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def acc [{++ _}]) < 1200356064 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(define (acc n) (lambda (x) (set! n (+ n x)) n)) < 1200356072 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :or the Common Lisp: < 1200356083 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(defun acc (n) (lambda (x) (incf n x))) < 1200356089 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :or even the Arc: < 1200356096 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def acc (n) [++ n _]) < 1200356217 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: anyway, if non currying is common, why not have two separate function applications, [] and (), where the other curries, and the other one gives the args, and actually calls, currying is COOL < 1200356225 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :it's AWESOME i tells ya. < 1200356231 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: that's basically what i have. < 1200356233 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :except it's {} < 1200356237 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and [] is lambda shorthand. < 1200356289 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :right. < 1200356298 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: my lisp is crazy because . can be the car of a list :D < 1200356301 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :except it's not exactly the same in the usage above < 1200356302 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(. a b c ...) is compose < 1200356313 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric ::O < 1200356452 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def id [_]) < 1200356464 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it looks like a mini-DSL embedded that can embed the toplevel, heh < 1200356591 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: show me something that uses a lot of currying, composition, etc. and looks kinda ugly/large in normal lisp < 1200356595 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and i'll CONCISIFY IT :D < 1200356793 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :with multiple-value-bind use? < 1200356847 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ah! < 1200356854 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :cartesian-product < 1200356876 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :variadic < 1200356878 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: show me your definition, i'll show you your definition short. < 1200356897 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(defun cartesian-product (&rest lists) < 1200356897 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric : (if (endp lists) '(()) < 1200356897 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric : (apply #'append < 1200356897 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric : (mapcar #'(lambda (head) (mapcar #'(lambda (tail) (cons head tail)) < 1200356897 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric : (apply #'cartesian-product (rest lists)))) < 1200356897 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric : (first lists))))) < 1200357064 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: okies, translation < 1200357096 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: by the way, shall i memoize it? < 1200357103 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :as simple as changing 'def' to 'defmemo' :) < 1200357109 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :I HAVE IT IN MY NEW LANGUAGE CARTESIAN-LOL: IT'S THE C FUNCTION "C" < 1200357122 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :hahaha < 1200357122 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i'll do some sleeping now -> < 1200357136 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: endp == {eq ()}? < 1200357139 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wait, no < 1200357143 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{eq (())}? < 1200357145 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :eck, i dunno < 1200357146 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200357193 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :{≡∅} < 1200357201 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: clarify endp and i'll translate it :P < 1200357229 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :endp = null? < 1200357249 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1200357257 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :nilp, then < 1200357386 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :um faxlore < 1200357393 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :do you meant to discard the mapcar in the lambda? < 1200357393 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1200357397 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i think you need to balance your parens < 1200357419 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric : * Now talking on #'(lambda < 1200357425 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1200357454 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1200357464 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i think put it in a pastebin once you clarify it ;) < 1200357550 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :CL-USER> (cartesian-product '(a x) '(1 2 3)) < 1200357551 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :((A 1) (A 2) (A 3) (X 1) (X 2) (X 3)) < 1200357570 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :works for me... < 1200357589 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok, maybe i read wrong < 1200357597 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ah i see. < 1200357634 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/2Lk59U92.txt < 1200357691 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(cons head tail) becomes `(,h . ,t)? < 1200357761 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: http://rafb.net/p/OGdGWT60.txt < 1200357772 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and naw < 1200357776 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :far more concise than that :-) < 1200357790 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :while still havinga reasonable theoretical basis! < 1200357793 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hooray for [] and {} < 1200357863 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: if i wanted i could make it more concise. but this way it's readable < 1200357869 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :make it shortec :P < 1200357900 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: why, it's readable, a lot less ugly than the CL and a lot shorter < 1200357900 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200357956 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION personally think, not less ugly < 1200357976 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :in CL you have loads of non-functional mess with #' and weird stuff like (&rest ...) < 1200357979 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and arcane names < 1200358008 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :oh, it is pesonal style < 1200358012 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: however... for shortness... I shall get out my secret weapon: EXTRACT < 1200358022 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :extract is a pattern-matching let, thing. < 1200358043 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(extract ((a . b) p) ...) is (let ((a (car p)) (b (cdr p))) ...) < 1200358046 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and similar stuff < 1200358052 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :none of the #' is required < 1200358064 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah well, comment on extract :P < 1200358075 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :i've always wanted pattern matching in scheme < 1200358089 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklokok: not quite scheme her, more like a blend of common lisp and scheme < 1200358092 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :more on the side of scheme though < 1200358095 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :indeed. < 1200358117 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :This is a good use of macros < 1200358119 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :that was a positive comment because of "comment on extract". < 1200358137 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: yep EXTRACT is a macro < 1200358178 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well < 1200358182 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :macro or special form < 1200358196 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :since an implementation might not want to go to the trouble of writing such a huge thing as a macro ;) < 1200358229 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :emacs with dvorak ;_; < 1200358231 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: care to give me any other reducing-targets? :D < 1200358252 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to look < 1200358321 0 :Hypercaffeinated!n=Hypercaf@125-236-169-77.broadband-telecom.global-gateway.net.nz JOIN :#esoteric < 1200358322 0 :Hypercaffeinated!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is making a smack in a head with a full carton of milk for this channel < 1200358322 0 :Hypercaffeinated!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gives everyone in this channel a smack in a head with a full carton of milk < 1200358322 0 :Hypercaffeinated!unknown@unknown.invalid PART #esoteric :? < 1200358374 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1200358388 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :stop it immibis < 1200358396 0 :immibis!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1200358549 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: ... :P < 1200358907 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: ping < 1200359001 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Excuse my typing so slow, dvorak in difficult < 1200359147 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1200359157 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :paredit will help you in typing out a function ;) < 1200359182 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Love paredit! < 1200359195 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :me too although it has its flaws < 1200359470 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: obviously Concise Lisp will come with its own emacs-alike written in Concise Lisp ;) < 1200359566 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :AAA! < 1200359581 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I can type faster on Dvorak than some people can at all. < 1200359684 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :(I wonder if a Dvorak wave is spreading across the Internet right now.) < 1200359745 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :you cannot get dvoraks anywhere < 1200359750 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :in here. < 1200359754 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :rearrange your keys. < 1200359763 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: AAA what. < 1200359770 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :doesn't sounds like something i would do. < 1200359773 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :*sound < 1200359784 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :"emacs-alike written in Concise Lisp" < 1200359868 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :WHAT'S WRONG WITH THAT FAXLORE :( < 1200359904 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :MAD!!! < 1200359914 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :+ good < 1200359985 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200360004 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: every buffer can act as a listener < 1200360007 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :with a seperate namespace < 1200360025 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so basically it's a REPL but with files and loads of refactoring stuff and a debugger built right in to the file itself and AAAAAAAAAAAAAAAAAAAAAAAA < 1200360064 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :hahah < 1200360126 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: also you can modify the ENTIRE EDITOR in itself < 1200360135 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :in its whole, complete, entirity. < 1200360244 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: PLEASE BE ASTONISHED. < 1200360267 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :AAAAA!!!!! < 1200360338 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :great < 1200360361 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: For example. < 1200360383 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :where 'edit' is to be substituted for the editors name and thus package name: < 1200360488 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: http://rafb.net/p/GL1Wpg49.txt < 1200360514 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(in-package X) is 'global' and thus works basically like common lisp's in-package < 1200360522 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but (in-package X FORMS...) is local to that form < 1200360529 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200360543 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ergo: my definition is extremely pretty and elegant and shows how awesome both the language and editor will be < 1200360545 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :agree/disagree < 1200360575 0 :sebbu!unknown@unknown.invalid QUIT :"@+" < 1200360687 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: http://rafb.net/p/tuLeKI45.txt overriding insert-brace (which will be bound to (, {, [, etc. by default) < 1200360704 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ofc there'll probably be a more featureful equivilent by default, but hey, it's a good example. < 1200360734 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Cool :D < 1200360783 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: this thing started off esoteric but already i'm liking it more than scheme or common lisp :P < 1200360791 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :just looks nice. < 1200360810 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :hehe, hopes it works well < 1200360899 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: i might add an implicit EXTRACT to parameter lists < 1200360909 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def revpair ((a . b)) (cons b a)) < 1200360967 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: bit of a problem if you want to handle nil as well though < 1200361027 0 :faxlore!unknown@unknown.invalid QUIT :"If there are any aliens, time travellers or espers here, come join me!" < 1200361082 0 :faxlore!n=more@137.195.250.2 JOIN :#esoteric < 1200361101 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wb faxlore :P < 1200361116 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has trouble with a new keyboard layout.. < 1200361121 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1200361151 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: I think EXTRACT might become my LOOP: crazy big language embedded in Lisp < 1200361165 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Yay! < 1200361170 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :LOOP is -awesome- < 1200361175 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i hate you :P < 1200361184 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :I love LOOP and FORMAT... < 1200361208 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :A lot of people.. use iterate < 1200361212 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :but I think they missed some good things < 1200361223 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(in the dark corners of loop) < 1200361226 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def silly (lst) (extract (((first rest... last)) lst)) (cons last (append rest (list first))))) < 1200361239 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(silly '(1 2 3 4)) => (4 2 3 1) < 1200361249 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(silly '(1)) => error < 1200361254 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(silly '(1 2)) => (2 1) < 1200361267 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(silly '(1 2 3 4 5 6)) => (6 2 3 4 5 1) < 1200361445 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: Unfortunately extract is not turing-complete. Yet. :-) < 1200361851 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: Pingify < 1200361943 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: By the way, (def 1+ {+ 1}) actually defines as a function, as opposed to (= 1+ {+ 1}) or whatever.I haven't decided if there's any signifigance to this or even whether it will stay like that, though, because atm functions and variables share the namespace (i.e. Lisp-1) < 1200362002 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nod.. thats a hard choice < 1200362021 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: I think it's more elegant since it resembles the Lambda-calculus more and allows for higher-order functions to be much more elegant < 1200362028 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and I personally don't mind typing lst instead of list ;) < 1200362046 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :actually it'd be confusing to have a param named list anyway even in CL < 1200362071 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: An interesting thing I have is the generic lookup function ! < 1200362082 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(! lst i) -> lst element i, zero-based < 1200362091 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(! ary i) -> array element i, also zero-based < 1200362099 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(! ht "blah") -> hash table element "blah" < 1200362145 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :name borrowed from haskell's infix operator !, obviously < 1200362157 0 :immibis!unknown@unknown.invalid PART #esoteric :? < 1200362208 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: COMMENT OR DIE! :P < 1200362258 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION takes time! yd.f t.fo ap. bry ,d.p. yd.f odrgne x.! < 1200362278 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hehe, i'll wait for your comments :P juist send em in one big message < 1200362369 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :I woiuld debate that Lisp-1/2 is orthogonal to ST Lambda-calculus axis < 1200362383 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: sure, i guess, but hey. < 1200362445 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :generic lookup's great... Hopes it is extensible < 1200362479 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: extensible in what way < 1200362533 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1200362534 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION defines a new type... wishing to use ! on it < 1200362635 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh of course. < 1200362643 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i think all functions will be generic < 1200362664 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and the (def func (args) ...) being shorthand for it < 1200362681 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well, it would be shorthand for something which would be optimized away to be non-generic until new terms are added < 1200362693 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: a generic setter would be nice too but i don't really like setf < 1200362700 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(setf (car x) y) just doesn't rub well with me < 1200362702 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :however, < 1200362713 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(setter-thing ht "blah" "xyzzy") does. < 1200362725 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(setter-thing lst 1 'abc) too < 1200362740 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :can't think of a good name though < 1200362745 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well, = might work.. < 1200362753 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(= lst 3 "hello") < 1200362758 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(= ht "xyzzy" "plugh") < 1200362761 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm, i guess so.. < 1200362789 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: the thing with lisp-1ness is that it goes hand in hand with [..] and {..} < 1200362801 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :You seem much more a schemer than lisper/CLer :p < 1200362813 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you want to be able to construct one of those things and return them first-class < 1200362826 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: i guess so though i do accept scheme has its flaws and CL has a lot of good things < 1200362831 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: what specifically make syou say that? < 1200362883 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Of course, they are both incredibly well designed < 1200362945 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :terniary =.... bad < 1200362948 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I guess I like the idea of Scheme with extra practicality added more than Common Lisp's based-on-practicality-and-featureness < 1200362955 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: yeah i'd agree with that = < 1200362974 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :haskell has no direct setter equiv to ! but that's because they're immutable < 1200362994 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :set! of course has scheme destructive-marker implications < 1200363003 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :!set is incredibly ugly ;) < 1200363007 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1200363037 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :beause off not liking setf < 1200363054 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh, well setf just seemed a bit silly to me < 1200363069 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Perl6 has it as well, I think < 1200363078 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(defineable lvalues) < 1200363094 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you can /kind of/ pretend to yourself that you're setting what a function will return... but it'll never be transparent, it'll always shine through and really it doesn't gain much in readability (and arguably impacts on it) < 1200363348 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: i'm wondering whether i should just make it even crazier by adding a scheme-like (delay X) but with no force < 1200363354 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's implicit, like haskell's lazy evaluation < 1200363362 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :one way road to BUGS BUGS BUGS! :D < 1200363396 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :too strong haskell influence < 1200363409 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: i know. but funny. < 1200363413 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :lav < 1200363432 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: hmm, it occurs to me i've got something like CLOS built in but without the classes or objects ;) < 1200363434 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :lazy scoping? < 1200363457 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that is, you can define structures and they become regular first-class types like 'pair' or 'integer' < 1200363463 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and therefore generic functions can dispatch on them < 1200363465 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :have you read AMOP? < 1200363474 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no MOP, obviously :) < 1200363571 0 :faxlore!unknown@unknown.invalid QUIT :"If there are any aliens, time travellers or espers here, come join me!" < 1200363644 0 :faxlore!n=more@137.195.250.2 JOIN :#esoteric < 1200363672 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: personally i say 'thank god' to the going of the MOP < 1200363677 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but i'm biased, ofc ;) < 1200363694 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :however: < 1200363703 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :huh? "going of the MOP" < 1200363714 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(type-of my-structure) => # < 1200363723 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(type-of type-type) # < 1200363728 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(last line: most confusing evar) < 1200363739 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so, i guess you could extend type in some crazy way < 1200363742 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and get a pseudo-mop < 1200363810 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :is that Type : Type I see! < 1200363821 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :something like that, yeah. < 1200363824 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :absurd! < 1200363829 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1200363829 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1200363829 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :why < 1200363831 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1200363874 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :a type is-a type. < 1200363883 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :thus their type is also a type. < 1200363893 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but their type is 'type', so (type-of type-type) => type-type < 1200363895 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(girards paradox, if you take curry howard srs) < 1200363969 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh dear, paradoxes < 1200363974 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but Smalltalk does it and Smalltalk isn't insane! :P < 1200363982 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :yeah, it's not relevant :P < 1200363996 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :damn you :P < 1200363999 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :just attempting Type theory puns when there is an opportunity.. < 1200364006 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1200364026 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :hey I wrote a type and term inferrence thingyjigs in haskell for the simply types lambda cal < 1200364040 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I think [{++ _}] might be the first 'does something non-trivial' function in Lisp with no parentheses < 1200364041 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1200364127 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Hmm, how to parse [{++ _}]... First I need to come up with a name for _-advances-to-next-param lambdas :P < 1200364148 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{...} can be (apply-partial ...) < 1200364300 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :nameless-lambda i guess. < 1200364307 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(nameless-lambda (apply-partial ++ _)) < 1200364310 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Kind of ugly but eh. < 1200364325 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :nameless-lambda's definition will of course be epic :P < 1200364328 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :heheh nameless-lambda < 1200364374 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Note: nameless-lambda is not the opposite of named-lambda. Unfortunately. < 1200364378 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(Perl documentation reference!) < 1200364384 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :why not expand at parse time? < 1200364402 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: because i'd have to do alpha-conversion of names < 1200364422 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :gensym!! < 1200364426 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so (read) would become 2384972398479238472389472394 times more clever than it should be < 1200364428 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: eh. < 1200364441 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: i guess i just think read should be dumb < 1200364449 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :What if I want to read in a file with [...] and {...} in? < 1200364459 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :#;> (gensym) < 1200364459 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :|%%_LEKqa1Ql9| < 1200364462 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OK, nameless-lambda and apply-partial would make the thing weird for names but you could do '{...} and '[...] < 1200364470 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and i know what gensym is... what lisp impl is that? weird prompt < 1200364484 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :SISC < 1200364517 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but that's Scheme! :P < 1200364524 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I thought you were a lisper. :P < 1200364555 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION still lot for language < 1200364566 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :lost* < 1200364578 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: No you're not! Concise Lisp (which needs a name change)! :P < 1200364585 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :LOL < 1200364616 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :I like the name a bit < 1200364628 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's abbreviated to CL, that might be a problem :P < 1200364673 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ahh true < 1200364850 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Quote Lisp! < 1200364858 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :For the 'Lisp < 1200364860 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :err < 1200364872 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :For the (quote lisp) => lisp pun. < 1200364881 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(i.e., < 1200364891 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :"Quote Lisp is THE ONLY Lisp!". lame i know) < 1200364995 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: I hope to get a good string library in with it... it's time for lisp to stop denying strings as Holy Things :P < 1200365055 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :strings as lists > strings as vectors < 1200365070 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: ... right up until when you start doing serious work with them < 1200365084 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :serious work??? < 1200365092 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :more than toy string manipulation programs. < 1200365100 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: Oh yeah and you'll probably HATE this but lambda is being renamed to fn for exactly the same reasons that PG did it in Arc: lambda is a lot to type for something so commonly used (did Church write "lambda"? No! He wrote one symbol. Big difference.), so eh. < 1200365130 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :I deo hate that < 1200365152 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :call it lambda or λ < 1200365169 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :or ` or \ < 1200365194 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: ` is quasiquote < 1200365198 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :fn disgusts :P < 1200365201 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :\ escapes stuff, etc < 1200365209 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :unicode is... not plausible for that ;) < 1200365214 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :fun is fine < 1200365218 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :eh suggest something else.. < 1200365223 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :lm? < 1200365225 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ld? < 1200365248 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(In ML.. Not lisps) < 1200365265 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: as i say: suggest < 1200365266 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ugh < 1200365270 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :reading PG's stuff on Arc: < 1200365271 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :- Polymorphism: (+ "foo" "bar") -> "foobar" < 1200365274 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :BAD WRONG NO. < 1200365288 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :+ a commutative, whatever-the-word-is-for-ignoring-associativity operation < 1200365290 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :concatentation is NOT < 1200365333 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Arc is not worth learning about... publicity stunt < 1200365343 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i know < 1200365352 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION think that's hypocritical nonsense. < 1200365353 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but still... using + for that is evil < 1200365362 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :he uses = as something which does assignment < 1200365368 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(unless that changed) < 1200365374 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :get yourself a concatentation operation and use that! < 1200365381 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I hear we have one called 'append'... < 1200365545 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: Oh yeah, and progn/begin is called 'do' < 1200365552 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'progn' - uhh, sure... < 1200365555 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'begin' - begin what? < 1200365560 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'do' - do these things. < 1200365681 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION lol at 'progn' comment < 1200365695 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1200365709 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'prog': To prod with prongs < 1200365716 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'n': abbreviation of "and" < 1200365722 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Prod with prongs, AND: ... < 1200365784 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1200365809 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: I don't really like letrec (seems like a bit of a kludge to me) but I want mutually recursive functions to be easy to define. Hmm, hmm, hmm. < 1200365826 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :How can you say that about LETREC!!!!? < 1200365860 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: heh :) < 1200365865 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :Let's see you derive generalied applicative order Y combinators faster than you can type 'letrec' !! < 1200365891 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :meep < 1200365892 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1200365902 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200365907 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :This is Heretical Lisp i'm aware :D < 1200365929 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Heck, I'm even adding quite a few loop constructs, probably... But they expand into tail-recursive functions so that's OK < 1200365931 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :ACTION can tell.. it will have much to stir deamons < 1200365934 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :much power* < 1200365962 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200366148 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxlore: I think I'll have something like haskell < 1200366149 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'s maybe < 1200366154 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :except implicit Just < 1200366163 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so you have a (nothing), which i might give a nicer name < 1200366171 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :note: NOT equivilent to 'unspecified' < 1200366177 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's a BadThing(TM) < 1200366187 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(kang.o) < 1200366198 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :-_- < 1200366216 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :(values) ; :) < 1200366237 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(values) is 'unspecified' < 1200366253 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'def' should return 'unspecified'. (if #f blah) should return 'unspecified' < 1200366289 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'something which is either: some values, or: fail/nothing' should use (fail) or (nothing) or whatever. < 1200366529 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1200366531 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :talk more tomorrow. < 1200366532 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bye. < 1200366543 0 :faxlore!unknown@unknown.invalid PRIVMSG #esoteric :see ya < 1200366960 0 :Arrogant!i=Arrogatn@130.orlando-09-10rs.fl.dial-access.att.net JOIN :#esoteric < 1200369100 0 :faxlore!unknown@unknown.invalid PART #esoteric :? < 1200370760 0 :Arrogant!unknown@unknown.invalid QUIT :"Leaving" < 1200370911 0 :Merthsoft!n=Shaun@140.141.22.103 JOIN :#esoteric < 1200370929 0 :Merthsoft!unknown@unknown.invalid PART #esoteric :? < 1200374501 0 :calamari!n=calamari@ip24-255-58-134.tc.ph.cox.net JOIN :#esoteric < 1200374626 0 :slereah_!n=slereah@ANantes-252-1-8-117.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1200374688 0 :slereah__!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1200374746 0 :RodgerTheGreat!unknown@unknown.invalid QUIT : < 1200375109 0 :calamari!unknown@unknown.invalid PART #esoteric :? < 1200375575 0 :Figs!n=figs@dyn128-54-221-202.ucsd.edu JOIN :#esoteric < 1200375677 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric :hello < 1200375884 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric :Does anyone know why I get weird warnings (ex, "no newline at end of file") when I include a file from within a function in C? (It has an extra newline at the end of the file...) < 1200375897 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric :I'm doing some weird stuff, so I figure it's better to ask here than in #C :) < 1200375910 0 :slereah_!unknown@unknown.invalid PRIVMSG #esoteric :I'm no C guy. < 1200375966 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric :I'm actually starting to like C again after learning about __func__ < 1200375979 0 :slereah_!unknown@unknown.invalid PRIVMSG #esoteric :You're a lucky man < 1200375983 0 :slereah_!unknown@unknown.invalid NICK :Slereah < 1200375997 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric :Nah, I'm a nut case, I think. < 1200376021 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Doesn't mean you're not lucky! < 1200376026 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1200376039 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric :So what's going on here these days? < 1200376047 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric :I haven't been around in a while... < 1200376124 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Language creation, all that. < 1200377692 0 :Figs!unknown@unknown.invalid PRIVMSG #esoteric :bbl maybe < 1200377694 0 :Figs!unknown@unknown.invalid PART #esoteric :? < 1200380289 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :[05:02] 'def' should return 'unspecified'. (if #f blah) should return 'unspecified' < 1200380290 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :[05:03] 'something which is either: some values, or: fail/nothing' should use (fail) or (nothing) or whatever. < 1200380307 0 :oklokok!unknown@unknown.invalid PRIVMSG #esoteric :ACTION thinks it's awesome to define 'undefined' :D < 1200383999 0 :clog!unknown@unknown.invalid QUIT :ended < 1200384000 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1200387306 0 :GreaseMonkey!unknown@unknown.invalid QUIT :"Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. Man who run behind car get exhausted" < 1200388116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm, game of life is rather interesting, it is in a way multitasking < 1200388124 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and turing complete < 1200393059 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Maybe I should try creating one. < 1200393195 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure it will be less dry than that 2,3 machine I'm trying to understand < 1200393494 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I should really work on that N->ZxZ function. I run in that problem when I try to make some 2D language. < 1200395995 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Is there a big bestiary for the Conway game of life? < 1200396345 0 :slereah_!n=slereah@ANantes-252-1-10-134.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1200396538 0 :sebbu!n=sebbu@ADijon-152-1-44-63.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1200396893 0 :slereah_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is thinking of some convoluted way to make an I/O game of life < 1200397941 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1200400096 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1200400097 0 :ihope_!unknown@unknown.invalid NICK :ihope < 1200402311 0 :jix!n=jix@dyndsl-080-228-189-066.ewe-ip-backbone.de JOIN :#esoteric < 1200404976 0 :Asztal!n=asztal@cpc1-stkn2-0-0-cust786.midd.cable.ntl.com JOIN :#esoteric < 1200407533 0 :SimonRC!unknown@unknown.invalid QUIT :Remote closed the connection < 1200407537 0 :SimonRC!n=sc@fof.durge.org JOIN :#esoteric < 1200411511 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1200411593 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : i love highlighting oerjan. < 1200411614 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you don't say. < 1200411721 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(oh, and yes, i could tell you the three monad laws if you don't know them yet.) < 1200411791 0 :slereah_!unknown@unknown.invalid NICK :slereah__ < 1200411937 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :What's a good symbol for a game of live cell? < 1200411939 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :#? < 1200411946 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :*f < 1200411953 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :live or dead? < 1200411970 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Live. < 1200411974 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Dead will be space. < 1200412008 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :something a bit symmetric... < 1200412040 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :although * is tempting. < 1200412054 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :the blackes thing you can get your hands on < 1200412065 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Racist. < 1200412072 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :some of the "graphics" chars would be a better choice, surely? < 1200412087 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Well, so far it's ASCII's. < 1200412103 0 :jix!unknown@unknown.invalid QUIT :Nick collision from services. < 1200412104 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :And run on the Kubuntu shell, so the whole screen is black. < 1200412113 0 :jix!n=jix@host-091-096-148-068.ewe-ip-backbone.de JOIN :#esoteric < 1200412148 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :s/blackes/unspaciest/ < 1200412181 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(that's almost unspeciesist) < 1200412186 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :That's why I thought of the # < 1200412198 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :It seems bulky enough < 1200412205 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Although * is indeed tempting < 1200412212 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :what about actual ANSI color? < 1200412238 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :How do I do colors on the snake? < 1200412248 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :snake? < 1200412252 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Python. < 1200412259 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :The penguin being Linux. < 1200412267 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i assume it's a terminal thing < 1200412279 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there was a wikipedia page < 1200412304 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Exception handling makes me frown. < 1200412312 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/ANSI_escape_code < 1200413125 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Aw hell. < 1200413138 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :do I need two grids for the game? < 1200413186 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for game of life? < 1200413192 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :One to check the previous state and one to apply change to. < 1200413210 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :I fear what will happen otherwise < 1200413211 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there is a way to do it with only a line of extra buffer < 1200413254 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :since you only need to look at the next and previous lines, you can discard older lines than that < 1200413283 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Problem is, my grid isn't really a set of lines. < 1200413313 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :The square 123456789 is this : < 1200413314 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand having two full grids may allow for more simultaneous updates i think < 1200413315 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :[[' ', ' ', '7', ' ', '4', ' ', '1', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', '8', ' ', '5', ' ', '2', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', '9', ' ', '6', ' ', '3', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']] < 1200413356 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um is this Conway's Game of Life or something slightly different? < 1200413362 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :It is. < 1200413381 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :But I recycled the Love Machine to have an infinite plane. < 1200413396 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well as long as things are sorted by either x or y direction you still should be able to do things in one of those orders... < 1200413425 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :It's a list of list, both using a folding function to go in all directions < 1200413454 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :infinite in all directions? < 1200413458 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1200413483 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :It's a simpler solution than finding a N-ZxZ mapping. < 1200413507 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :two-directionally infinite? < 1200413527 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Well, I think. I haven't checked so far. < 1200413537 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :I'm still writing the checking-adjacent-cells < 1200413577 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :now this being python the list is not _actually_ infinite just potentially so, i assume < 1200413613 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Well, I think most language don't allow infinite lists. < 1200413623 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unless you are employing laziness somehow < 1200413659 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :But I'll use the same thing as the Love Machine 9000 - when there's moar cells required, in this case when a live cell appears at the edge, I'll just append some more cells around it < 1200413688 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :not a whole line of them... < 1200413708 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :gliders can be expensive that way < 1200413747 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :I'll start with a whole line, and see what I can do with it < 1200413773 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ideally you want it to forget again regions where everything has died < 1200413775 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Although it's actually a whole square, since it's all around the grid < 1200413826 0 :Corun!n=Corun@halls-129-31-72-183.hor.ic.ac.uk JOIN :#esoteric < 1200414082 0 :ihope!unknown@unknown.invalid QUIT :"ChatZilla 0.9.80 [Firefox 2.0.0.11/2007112718]" < 1200414190 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1200415224 0 :RodgerTheGreat!n=Rodger@wads-5-233-27.resnet.mtu.edu JOIN :#esoteric < 1200415489 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so now that people are alive and stuff < 1200415496 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :accumulator generator: < 1200415501 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(def acc [{++ _}]) < 1200415506 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i challenge you to show me something shorter. < 1200415512 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*ACK* *GARGLE* *THUMP* < 1200415518 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: :D < 1200415538 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: [...] is a lambda with _ meaning 'the next argument' < 1200415542 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :howdy, folks < 1200415544 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :[_ _] is (lambda (x y) (x y)) < 1200415549 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{...} is currying < 1200415552 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well < 1200415554 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :partial application. < 1200415594 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i also have pattern matching :D < 1200415602 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and cond and let lose most of their parens < 1200415607 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(let (a 2 b 3) ...) < 1200415618 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(cond (eq a b) "stuff" (eq b c) "blah") < 1200415623 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's Heretical Lisp! < 1200415685 0 :Corun!unknown@unknown.invalid QUIT :"Haxsell!" < 1200415705 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh yeah and i'm planning making be an error by default but definable < 1200415710 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :for basically one purpose < 1200415737 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :
" 2 + 2 = " (+ 2 2)> < 1200415738 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :mwahahaha < 1200416202 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah i'm crazy < 1200416300 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :reminds me slightly of markaby. < 1200416303 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :div.AAAAAH! { strong 'Evil HTML lisp sez'; text "2 + 2 = #{2+2}" } < 1200416324 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :markaby wasn't the first html generation tool you know < 1200416572 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Asztal: did you read the stuff about [] and {} < 1200416581 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if not, I challenge you: decipher (def acc [{++ _}])! < 1200416888 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :well.. you've already said what it was < 1200416898 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :am I supposed to decipher how it works? < 1200416917 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :eh, i guess, thouigh if you read that then it miught be easier < 1200416932 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah, decipher how it works... ifyou know ruby give me ruby code that is 100% equiv. or something :P < 1200416937 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its not that hard once you get the basic principles < 1200417050 0 :faxathisia!n=more@137.195.250.2 JOIN :#esoteric < 1200417100 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hello faxathisia < 1200417112 0 :faxathisia!unknown@unknown.invalid PRIVMSG #esoteric :Hiya < 1200417413 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxathisia: my lisp is even more heretiacl now < 1200417417 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(let (a 2 b 3) ...) < 1200417422 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(cond (eq a b) "stuff" (eq b c) "blah") < 1200417434 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :to be fair mccarthy *did* say he thought he got cond wrong: too many parens < 1200417460 0 :faxathisia!unknown@unknown.invalid PRIVMSG #esoteric ::o... I never heard that < 1200417465 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1200417499 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :IMO let suffers from the same problem < 1200417516 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the parens are simply not needed and make the code uglier < 1200417541 0 :faxathisia!unknown@unknown.invalid PRIVMSG #esoteric :Oh < 1200417554 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh what < 1200417582 0 :faxathisia!unknown@unknown.invalid PRIVMSG #esoteric :Y not just have all lets imlicitly letrecs < 1200417685 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because, that's ridiculous. < 1200417716 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :> (letrec ((a a)) a) < 1200417722 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :-> some internal value < 1200417733 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :> (let ((a a)) a) < 1200417733 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Error: unbound variable: a < 1200417737 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(Chicken Scheme) < 1200418096 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxathisia: that's why < 1200418477 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: actually, both of those are just like arc < 1200418488 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I mean, your heresies < 1200418511 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: even if arc didn't do it, i would < 1200418521 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it just happens to be a good idea outside of arc [which sucks[ < 1200418528 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :really, why? < 1200418533 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :have you used arc? < 1200418569 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :1. its mostly hype, not that much new 2. a lot of the new things are unneeded and: 3. impure and unclean, inelegant < 1200418598 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it gains conciseness at the cost of readbility and purity. < 1200418674 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :also a bit of irony < 1200418680 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :they go on about how arc concentrates on web apps < 1200418689 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and yet < 1200418690 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :"We're trying to make something for the long term in Arc, something that will be useful to people in, say, 100 years. (If that sounds crazy, remember that we're already up to 40.) " < 1200418704 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i guess web apps will still be The Hot Thing in 100 years. < 1200418761 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :By then, the web will be nothing but robot porn. < 1200418825 0 :tesseracter!n=tesserac@pool-72-79-240-131.spfdma.east.verizon.net JOIN :#esoteric < 1200418835 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if it's even still in much use < 1200418841 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it may be reduced to usenet-like status < 1200418931 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :It will be like in "Beneath a steel sky", nothing but cheap abstract 3D shapes and epic battles for datas! < 1200418936 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: I personally think my lisp is nicer-looking, has the possibility to be much more concise, and is just plain better < 1200418951 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :slereah__: we'll be in 4d by then. (Great game, btw.) < 1200418972 0 :tesseracter!unknown@unknown.invalid PRIVMSG #esoteric :wha? someone say something about 4D? < 1200418981 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1200418983 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :good timing. < 1200418993 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :EX-TER-MI-NA-TION! < 1200419007 0 :tesseracter!unknown@unknown.invalid PRIVMSG #esoteric :(which game) < 1200419013 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :The ending was a little disappointing though < 1200419018 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Beneath a steel sky < 1200419047 0 :slereah__!unknown@unknown.invalid PRIVMSG #esoteric :Where a man named after a beer brand battles the evil empire < 1200419049 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :never got to the end < 1200419051 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :heh. < 1200419060 0 :faxathisia!unknown@unknown.invalid PRIVMSG #esoteric :That game rules! < 1200419128 0 :slereah__!unknown@unknown.invalid NICK :Slereah < 1200419133 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :My game of life is currently a GAME OF DEATH :O < 1200419142 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :faxathisia: there's such a hive mind in #esoteric < 1200419164 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I hate it when there's too much exceptions and list index. < 1200419165 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the majority of the time we just agree with each other ;) < 1200420273 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :So far it works for all 4-cell combinaison! < 1200420403 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :*** transform thusly, is it okay? http://membres.lycos.fr/bewulf/Russell/Life.png < 1200420481 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Hm. Doesn't seem to be. < 1200420497 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :It's supposed to rotate or something apparently < 1200420610 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Seems to think that the three cells got 2, 4 and 2 neighbours. < 1200420612 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Damn. < 1200420967 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i want to write a noding system like everything2, except esoteric somehow < 1200421226 0 :ais523!n=ais523@chillingi.eee.bham.ac.uk JOIN :#esoteric < 1200421239 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :morethaneverything? < 1200421244 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1200421249 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i mean, technology wise < 1200421284 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(although morethaneverything would not be a bad idea, it seems: see http://qntm.org/?e2code, telling of the horrible mess that apparently is the e2 code... all changes made live with no backup! yeek!) < 1200421564 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :"And, actually, the more you can avoid programming in C the more productive you will be." < 1200421565 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Heh. < 1200421578 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :depends on what you're writing < 1200421615 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I guess so. < 1200421638 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Maybe I should write the Love Machine 9000 on something efficient one day < 1200421649 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :But well. < 1200421746 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :did you ever see Perligata? < 1200421774 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :No. < 1200421790 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's basically an esoteric syntax for Perl based on Latin < 1200421811 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which shares the same property that it's usually possible to reorder the words in a statement and the new statement has the same meaning < 1200421913 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :grr... I've been given a program to run which does something easily achievable by standard Unix tools < 1200421920 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it's trying to sort a linked list using bubble sort < 1200421930 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which on the size of the data set I'm using is taking a while < 1200421969 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1200421982 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION recommends merge sort for linked lists < 1200421988 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :rewrite it in brainfuck. then you can say, "I rewrote the program in Brainfuck and it got 3 times faster." Maybe. < 1200421997 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I've set it running and I'm racing it to try to beet it with a command line tool < 1200422001 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :while typing on IRC at the same time < 1200422003 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :It is O(n lg n), unlike quicksort on arrays < 1200422106 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :beat it easily < 1200422121 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :resulting commandline? < 1200422141 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to figure out how to copy-paste it < 1200422151 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :select, middle-click? < 1200422176 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :tr ' ' '(newline)' < (filename) | sed -e 's/^[^a-zA-Z0-9]+//; s/[^a-zA-Z0-9]+$//;' | sort | uniq -c | sort > (filename) < 1200422187 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it took a while because I was trying to deal with the newline < 1200422197 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1200422202 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :\n would have worked, I think < 1200422208 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :on tcsh? < 1200422218 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ew < 1200422220 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :csh < 1200422229 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's the default on this server < 1200422234 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :what does it do? < 1200422247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :counts the frequencies of words in a file < 1200422257 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but with an unusual definition of word, hence the sedery < 1200422292 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, the original's finished now < 1200422301 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: "tcsh"/"it's the default on this server"/"what does it do?" < 1200422302 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :suck. < 1200422303 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1200422312 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and sometimes run programs too, apparently < 1200422334 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's sort of like a version of sh modified to be 'user-friendly' < 1200422349 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you can't do any more than a small number of redirections < 1200422360 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and you have to rm a file before you can pipe output to it, unless you're appending < 1200422365 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i know what csh is < 1200422370 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its not a sh derivative, much. < 1200422378 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sorry, when I said that the original program had ended, I was wrong < 1200422379 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it is basically a u seless toy < 1200422390 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :sort | uniq is often wrong. check out sort -u < 1200422397 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :scratch that, it had ended after all < 1200422397 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you are an INTERCAL programmer, right? < 1200422406 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: I was using uniq for the line count < 1200422410 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: yes < 1200422420 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm the current C-INTERCAL upstream maintainer < 1200422421 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: how feasable would you say an INTERCAL self-compiler would be? :-) < 1200422422 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ah, ok < 1200422439 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: it depends on definition and which language extensions you allow < 1200422453 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the CLC-INTERCAL compiler is written in a set of extensions that are added to the language itself < 1200422458 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it is a self-compiler, in some sense < 1200422469 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hm, definition being something basically like C-INTERCAL. But written in INTERCAL, of course... well, it could compile to anything 'real' (C, native code, asm, ...) < 1200422478 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even though the commands used to write the compiler are entirely disjoint from the ones used to write programs < 1200422480 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :language extensions: I guess C-INTERCAL, since it's the most common afaik < 1200422495 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :C-INTERCAL: 33 users. CLC-INTERCAL: 5 users. < 1200422502 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :C-INTERCAL: 33 users. CLC-INTERCAL: 21 users, sorry < 1200422504 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :popular stuff ;) < 1200422507 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :self-compiling INTERCAL would instantly wreck the passtime of proposing new INTERCAL extensions < 1200422510 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :source: Debian popularity contest < 1200422517 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: why? < 1200422526 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :C-INTERCAL is incompatible with CLC-INTERCAL, right? < 1200422529 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :because people CBA to implement them < 1200422532 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the same source says that 5 people actually use C-INTERCAL and 3 people use CLC-INTERCAL every now and then < 1200422534 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i have seen 2 clc-intercal only programs, though, so... < 1200422545 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they are not completely incompatible, especially in the most recent versions < 1200422556 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it is possible to write C-INTERCAL or CLC-INTERCAL-only programs < 1200422563 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :by using language features that are in one but not the other < 1200422573 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: are there any overlapping features? < 1200422578 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :lots < 1200422579 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'd say: most likely. < 1200422585 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and duplication of that sort is, yeah. < 1200422587 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :computed COME FROM, basic operand overloading, etc. < 1200422596 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: which would you say would be best as a 'pseudo standard'? < 1200422605 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :see the C-INTERCAL documentation at intercal.freeshell.org < 1200422613 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it lists portability for all the constructs in C-INTERCAL < 1200422629 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the pseudo standard is likely just INTERCAL-72 + noncomputed COME FROM < 1200422638 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because most of the other features only exist in C- and CLC-INTERCAL < 1200422645 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not J-INTERCAL < 1200422647 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION likes the enabling and disabling of statements for communication of parallel processes < 1200422655 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what fun < 1200422672 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I though COME FROM was in '72 < 1200422675 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I spent ages writing that documentation, so it would be satisfying for me if lots of people read it < 1200422687 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: no it wasn't, although as far as I could tell it was also invented in 1972 < 1200422692 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it just wasn't added to INTERCAL until later < 1200422695 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ok, to start with: a self-compiling, no-extensions INTERCAL compiler < 1200422704 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that compiles to C, asm, native code, or some other similar 'real' target language. < 1200422712 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :feasability= < 1200422723 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :without extensions a machine-translation from something like Brainfuck might be the best bet < 1200422734 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: binary output is an extension :D < 1200422737 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm, that was the kind of thing i was saying against, ais523 < 1200422741 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: OK fine with that :P < 1200422755 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it wouldn't be too bad trying to do it directly, though, apart from the expression syntax and the fact that you have to allow character I/O somehow < 1200422771 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :C-intercal presumably has a char IO extension < 1200422773 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so i'd say that < 1200422785 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wait, ESR maintained C-intercal at one point, didn't he? < 1200422788 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :character I/O is different in C-INTERCAL and CLC-INTERCAL, but both have command-line switches to use the other's semantics < 1200422789 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OK, CLC-Intercal! :P < 1200422792 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: yes < 1200422799 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it was C-INTERCAL < 1200422806 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yes, that's what i meant < 1200422818 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :=> OK, let's take the char I/O for CLC-Intercal then ;) < 1200422829 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Baudot is a pain to deal with < 1200422835 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I think that was the point < 1200422844 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, you have to know in advance how long the lines can be < 1200422852 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bad dots? < 1200422859 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or would that be braille < 1200422866 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: suggest a solution that fits neatly with my dislike of ESR and my dislike of THAT! < 1200422887 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1200422901 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, you could use one of CLC-INTERCAL's multithreading extensions to trap the error < 1200422910 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :haha wow, that's evil < 1200422916 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm planning to implement much the same error-trapping method in C-INTERCAL at some point, by the way < 1200422936 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the way it works is that there's a variable * that holds the most recent error < 1200422949 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but an error kills the thread, so you have to receive it in some different thread < 1200422962 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but reading from * when there hasn't been an error causes an error, so to trap the error you need three threads < 1200422973 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: OK, assuming C-INTERCAL binary IO etc extensions, feasability= < 1200422980 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(it must be able to compile itself still, obviously) < 1200422983 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :one which contains the error you're trying to trap, one that errors out instantly to put a value in *, and one that does the trapping < 1200422991 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not all the cintercal extensions presumably though < 1200422994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :feasability=reasonable but a lot of work < 1200422998 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mostly due to the expression syntax < 1200423028 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :incidentally, I recently discovered an easy way for an INTERCAL program to tell which interpreter it's running under < 1200423050 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :how? < 1200423054 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :IGNORE a variable, STASH it, change its value, RETRIEVE it, save that value, then change the variable to a new value to test if it's read only < 1200423086 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :J-INTERCAL ignores the read-only flag on STASH or RETRIEVE, so the value STASHED is viewed twice < 1200423141 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sorry, I meant STASH a variable, change its value, IGNORE it, RETRIEVE it, save that value, then change the variable to a new value to test if it's read only < 1200423150 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so J-INTERCAL reads out the original value twice < 1200423157 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :C-INTERCAL reads out the new value twice < 1200423167 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and CLC? < 1200423178 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and CLC-INTERCAL reads out the new value, but the non-IGNOREd status is stashed along with the variable, so you get two different answers < 1200423194 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ooooh, there's a unlambda-in-intercal... < 1200423195 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what about... < 1200423198 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :INTERCAL IN UNLAMBDA < 1200423199 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200423217 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can't think of a decent way to write an expression parser in that either < 1200423225 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there are some crazy corner cases < 1200423244 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :one of which is specifically disallowed both by the INTERCAL-72 and C-INTERCAL documentation because it's such a pain to parse < 1200423255 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and therefore can be said to not be legal INTERCAL < 1200423267 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which case is that? < 1200423293 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :.1 <- ,3SUB",2SUB.1".2~.3"".4 < 1200423302 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :... nested quotes. < 1200423304 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :y/n < 1200423320 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to be precise, nested quotes interacting with nested multidimensional arrays < 1200423335 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it has nested quotes even without N>1-d arrays? < 1200423336 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem is that .1 <- ,3SUB",2SUB.1".2 is a legal statement < 1200423337 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bizzare < 1200423353 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but the second set of ears have a different meaning in the two statements < 1200423367 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there could be any number of characters that need to be read before it could determine which is which < 1200423396 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :come to think of it, .1 <- ,3SUB",2SUB.1".2~.3".5".4 is truly ambiguous < 1200423408 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but as it's not fully grouped with sparks and ears, it's illegal anyway < 1200423429 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm: < 1200423441 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :when arrays aren't involved, it's possible to tell a begin quote from an end quote by checking which side of it the operator is on < 1200423456 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but the multidimensional array syntax looks like DO .1 <- .3SUB#4#5#6#7 < 1200423480 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no operators that might work to disambiguate < 1200423495 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :my abstraction eliminator will be interesting... < 1200423495 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :``skk -> (\z. kz(kz)) -> (\z. z) < 1200424005 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I had an interesting Underload optimiser, before I deleted it by mistake < 1200424009 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it would be easy to recreate < 1200424026 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you translated sii from Unlambda to Underload using the translations on the wiki < 1200424035 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it came out with (^:)^: < 1200424043 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sorry, ```sii``sii < 1200424050 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :transformed to (^:)^: < 1200424550 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the idea is that in most cases it doesn't matter whether evaluation is lazy or eager < 1200424589 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and so you can partially evaluate code before it gets duplicated later < 1200424596 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as long as you don't run S commands by mistake < 1200425126 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: by the way, my underload to C compiler is broken. i've started a rewrite, but eh < 1200425133 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :theoretically, its OK though, just a bug :-) < 1200425143 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in what way does the bug manifest? < 1200425160 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm not entirely sure... take a look at the fibonacci program output < 1200425192 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :*/*/**/*************(enough *s to break my terminal's display procedures...)SEGFAULT < 1200425217 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I wonder what goes wrong to cause that to happen? < 1200425229 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :maybe a problem with *, or :? < 1200425259 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah i'm not sure < 1200425277 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :originally dup was just pushing the same object instead of copying. but i fixed that, and it still happens < 1200425324 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :could you paste the generated C somewhere so I could take a look? < 1200425675 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok.. it's highly ugly, written-quickly crap though < 1200425734 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/dXRULi17.html < 1200425779 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the non-prewritten stuff starts at: < 1200425782 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :void ul_func_0(void); < 1200425787 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and ends at < 1200425790 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :int main(void) { < 1200425895 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: side note: * can be made efficient in that by adding: < 1200425899 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :struct _ul_obj *last; < 1200425901 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :to ul_obj < 1200425912 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and then going straight ot that in * and updating it < 1200425921 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is looking at the code right now < 1200426009 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem is that a : command isn't duplicating inner or cdr < 1200426024 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(it doesn't duplicate str either, but that isn't needed because the strings never change) < 1200426050 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to work properly you'd need to recursively duplicate TOS, not just its car < 1200426153 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I shall fix < 1200426331 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I can get rid of cdr, and jus thave last < 1200426337 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :since you can't do anything with them < 1200426338 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :they're immutable < 1200426339 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1200426358 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh, no < 1200426361 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_call needs it ofc < 1200426365 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :without cdr you couldn't eval or print < 1200426377 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1200426382 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok, : will be slow < 1200426393 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :since it needs to copy all cdrs, right? < 1200426398 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think so < 1200426408 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but a copy that isn't O(n) is impossible to achieve in general anyway < 1200426449 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :unless copy-on-write semantics work, and they don't because of the possiblity of code like :(a)*~(b)* < 1200426472 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :at least, copy-on-write wouldn't prevent the copy for ever so it wouldn't speed up the program < 1200426574 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :*/*/**/***zsh: segmentation fault ./blah < 1200426608 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ACTION pastes < 1200426611 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :htf does it segfault? < 1200426619 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: intelligently. < 1200426625 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1200426637 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200426641 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :okies: < 1200426642 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/Wh5hpI14.html < 1200426649 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :probably have a dumb obvious error in ul_copy < 1200426770 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, the return statement is obviously in the wrong place, but I don't see why that would affect the code because you never use the return value < 1200426782 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes i do < 1200426785 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes (food, bed, etc) < 1200426789 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric : it->last = ul_copy(src->cdr, &it->cdr); < 1200426790 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, you do use the return value; that's why you get the segfault < 1200426800 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it returns the 'end' object < 1200426803 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i.e. that which ->cdr = null < 1200426811 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :only if !src->cdr < 1200426819 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because you put it inside the else part of that if by mistake < 1200426819 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :um yes < 1200426822 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :rather than after the if < 1200426822 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no < 1200426824 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's on purpose... < 1200426831 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :read the code < 1200426833 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1200426834 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I assign to ->last < 1200426842 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which wants to be the object without a cdr, because its' the object at the end < 1200426847 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which is why i return when ->cdr == NULL < 1200426866 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, returning garbage is normally bad form which gcc will warn you about < 1200426873 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it isn't garbage < 1200426874 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it retusn it < 1200426877 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not it->cdr < 1200426901 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the function returns garbage if it doesn't reach a return statement < 1200426904 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like all functions in C do < 1200426933 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION senses a d'oh approaching soon... < 1200426938 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :D'oh! < 1200426940 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :say you have a list of three elements < 1200426955 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then last is set on the second element of the list not the first < 1200426972 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so if cdr isn't null, you want to return its last as the function's return value < 1200426984 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if (src->cdr) { return (it->last = ul_copy(src->cdr, &it->cdr)); } < 1200426986 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :looks right to me < 1200426992 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i did that before you said that heh < 1200426994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and besides, shouldn't the last for a one-element list point to itself? < 1200427001 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1200427003 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :otherwise you could never append to it < 1200427004 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :recursive structures + c scares me < 1200427006 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and yeah, i can < 1200427009 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i check for null in append < 1200427013 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and set that, and cdr < 1200427031 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1200427033 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you're right < 1200427033 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OK < 1200427069 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :with those two corrections, hopefully it should work < 1200427103 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :% ./blah < 1200427104 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :*zsh: bus error ./blah < 1200427110 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :probably a trivial bug. < 1200427123 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its in ul_concat() sez gdb < 1200427135 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so likely last being wrong, in that case < 1200427143 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :tmp = ul_pop(); tmp2 = ul_stack->top; tmp2->last->cdr = tmp; tmp2->last = tmp->last; < 1200427147 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the bulk of ul_concat() ^^^ < 1200427152 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah, most likely < 1200427157 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :time to search for ->last uses < 1200427167 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has had similar problems trying to deal with the C-INTERCAL multithreader < 1200427172 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which uses similar sorts of lists < 1200427177 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :btw < 1200427189 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric : if (src->cdr) { return (it->last = ul_copy(src->cdr, &it->cdr)); } else { it->last = it; it->cdr = NULL; return it; } < 1200427191 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's the new code < 1200427196 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm, wait < 1200427197 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i never set cdr < 1200427205 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1200427206 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Yes I Do. < 1200427237 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :86 tmp2->last->cdr = tmp; < 1200427239 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's the dying line < 1200427240 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not suprising < 1200427250 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(gdb) p tmp2->last < 1200427250 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :$2 = (struct _ul_obj *) 0x0 < 1200427268 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1200427268 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :duh < 1200427271 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's an 'inner'-val < 1200427279 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which i dont set ->last on, oops < 1200427305 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was about to say the same thing: line 26 in ul_push sets ->last to NULL rather than self < 1200427313 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no < 1200427313 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not that < 1200427316 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's fixed by now < 1200427317 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but ul_wrap. < 1200427319 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because you special-cased taht < 1200427329 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the fib program runs crazy fast < 1200427340 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is it working now? < 1200427358 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the horiz scrollbar on my terminal goes to the smallest it can as soon as the program starts < 1200427387 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could pipe it through head, I suppose < 1200427394 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: just saying, it's that fast < 1200427398 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: also head works on lines :P < 1200427407 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh yeah, and this is with just "gcc blah.c -o blah" < 1200427409 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no optimization < 1200427409 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :head has an option to work on chars instead < 1200427416 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I'm not surprised by the speed < 1200427428 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :compiled with -O2 now, i'm going to pipe it to a file for approx 10 secs then wc -c it < 1200427441 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :shit. < 1200427442 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :zsh: segmentation fault ./blah > fibs < 1200427442 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION will have to make another try to write the Unlambda -> Underload compiler < 1200427456 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :out of memory or out of stack, maybe? < 1200427464 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :stack. < 1200427467 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i just realised... < 1200427472 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :most likely out of stack with recursive calling on a ridiculously long list < 1200427472 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_call is tail-recursive. < 1200427473 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but ->fp < 1200427475 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :can call ul_call < 1200427476 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :etc < 1200427483 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and no, ul_call uses goto for ->cdr < 1200427491 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :afaics there is no solution... < 1200427497 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you NEED to retain the stack < 1200427500 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it's more that ul_copy is unlikely to be tail-recursed by a C compiler < 1200427501 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because it contains useful stuff. < 1200427514 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ul_copy can't be tail-recursive < 1200427519 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1200427521 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :one way to settle this < 1200427522 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :GDB! < 1200427526 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, of course < 1200427541 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but the same code might be possible to write with a while loop if you made two passes < 1200427548 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i guess < 1200427552 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not nearly as fast though... < 1200427556 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :woah < 1200427557 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: < 1200427559 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it was ul_copy < 1200427561 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :recursing for inner, because that grows slower than cdr < 1200427568 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i just typed 'bt' and for many seconds i've been getting ul_copy stack frames < 1200427571 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and using iteration for cdr < 1200427575 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :over and over and over and over and over and over and over.............. < 1200427583 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: can i make both iterative? < 1200427592 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :over 40000 so far < 1200427593 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :sheesh < 1200427600 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :50000 < 1200427605 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's probably some way, but I can't figure it out in my head in a few minutes < 1200427625 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it would be inefficient without an uncdr link that pointed the other way < 1200427631 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no it wouldn't < 1200427640 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could iterate once setting cdrs and finding out last < 1200427647 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and then iterate a second time setting last all along the list < 1200427663 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in fact, last doesn't matter except at the start of the list, so you'd only have to set it there < 1200427682 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :doing inner recursively would be harder < 1200427719 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: 130998 frames of ul_copy < 1200427722 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i think whatever it takse i need iterative < 1200427743 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so if you think of a way to do both without recursing... < 1200427754 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :also ul_call without recursing would be nice... wait... i guess i could do TCO < 1200427760 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: are there many tail calls in unlambda? < 1200427774 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and are they very literal: last command in (...) is ^? < 1200427775 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :```sii``sii is tail recursive < 1200427782 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i mean in real programs liek the fibonacci < 1200427785 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and most loops work with the same principle < 1200427789 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and ^ is always the last command < 1200427790 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :EXTEREME TAIL RECURSION < 1200427794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or almost always < 1200427803 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :err < 1200427805 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :UNDERLOAD < 1200427806 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :UNDERLOAD < 1200427821 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I write loops with (blah):^ normally < 1200427825 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and such loops are tail recursive < 1200427835 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ((hi)S):^S < 1200427838 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :produces: < 1200427840 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hi(hi)S < 1200427852 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :even fib has non-tail-call < 1200427853 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :two of them < 1200427854 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(()(*))(~:^:S*a~^a~!~*~:(/)S^):^ < 1200427869 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because the ^ is often used for non-looping purposes < 1200427880 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if i just keep my own stack, it'll be little more efficient than a good interp < 1200427881 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1200427884 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there it's used to split the top stack element from ((abc)(def)) to two elements (abc) and (def) < 1200427895 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and keeping your own stack is likely to be the only option in some cases < 1200427905 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because the original program may not be written in a tail-recursive way < 1200427908 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but it won't even be fast < 1200427920 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :of course, when the original programmer runs out of stack space, you can then blame it on them < 1200427923 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it'll be about as good as a c interpreter.. < 1200427942 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it's possible without maintaining your own function stack in most cases < 1200427996 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but don't you agree about the speed thiing? < 1200428005 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :speed is important < 1200428008 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :exactly < 1200428019 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I think ul_eval will run out of stack long after ul_copy does < 1200428023 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :keeping my own stack will be bsically the same speed as a c interp < 1200428030 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OK then < 1200428032 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and its ul_call < 1200428036 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no eval happens! :) < 1200428073 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you have a pointer to the cdr of whatever you're calling, then you can append it to the thing you call rather than its original location and make ul_call tail-recursive that way < 1200428079 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think, it's a little hard to work out the details < 1200428105 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :append will just set cdr though < 1200428128 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but you can't append to a program while it's running, so the problem never comes up < 1200428132 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1200428148 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i don't really understand < 1200428156 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyway, there's a problem ais523 < 1200428161 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1200428166 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if i want to optimize tailcalls < 1200428169 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i need to either: < 1200428171 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :1. do stack smashing < 1200428177 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :2. use goto labels and keep my own stack for non-tailcalls < 1200428179 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :neither is feasable < 1200428183 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :setjmp! < 1200428184 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :don't you love C for not having tailcalls? < 1200428190 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sorry, I'm too much of a fan of setjmp < 1200428195 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :setjmp won't work for it < 1200428213 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, the usual way to tail-recurse in C is to goto the start of the function rather than calling it < 1200428222 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :after setting all the args to the right values < 1200428237 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so instead of return myself(a1,b1,c1); < 1200428245 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: tail calls don't have to be to the same functions < 1200428247 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's TAIL RECURSION < 1200428250 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you do a=a1; b=b1; c=c1; goto myself_top < 1200428262 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was giving a description of tail-recursion < 1200428265 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :general tail-calls are harder < 1200428271 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i have an idea, actually < 1200428278 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :have one dispatcher function, underload() < 1200428281 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :have it like this: < 1200428304 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok, il'l take an example program < 1200428307 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(:^):^ < 1200428309 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's: < 1200428311 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :in underload(): < 1200428349 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :push(f1, ":^"); dup(); discard(); goto f1; < 1200428360 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :err < 1200428361 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wait no < 1200428363 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's like this: < 1200428379 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wait, wait < 1200428382 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'llw rite it in a file < 1200428383 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then paste it. < 1200428405 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :my earlier idea for preventing recursive stack usage in ul_call was to check if fp was ul_call in the o->fp(); line; if it was, instead of calling ul_call, you append o->cdr to the end of TOS, and then set o to TOS, after popping the TOS < 1200428433 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so that the return address is saved by the cdr pointer on the end of TOS, rather than on C's stack < 1200428437 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it should be just as fast, or faster < 1200428557 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://rafb.net/p/VwMkyk23.html < 1200428572 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and, for normal calls, you can just do basically underload(tmp->label) < 1200428578 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :clever/not clever? < 1200428635 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's the same technique C-INTERCAL uses, pretty much < 1200428644 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except that it maintains its own stack for normal calls < 1200428656 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :MINE IS BETTER! It uses the highly efficient C stack. < 1200428659 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200428666 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I'm planning to make it use the real C stack for all calls at some point in the future < 1200428680 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you can intersperse code that wasn't compiled from INTERCAL < 1200428691 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :anyway, I should have gone half an hour ago < 1200428709 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :aww, bye then :) < 1200428710 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I'll see if I can work out non-stack-gobbling versions of your C utility functions when I'm at home < 1200428721 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OK < 1200428722 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bye :) < 1200428723 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :unless I have to do something else... < 1200428726 0 :ais523!unknown@unknown.invalid QUIT :"bye" < 1200429442 0 :RedDak!n=dak@87.18.86.16 JOIN :#esoteric < 1200429507 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so now my Underload (...)s are no longer functions < 1200429509 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what should i call them? < 1200429511 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :subprograms? < 1200429658 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :blimps < 1200429666 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i like it < 1200429715 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it's a good thing gcc can optimizes heavily. < 1200429718 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :*optimize < 1200429725 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it'll make these programs Really Damn Fast(TM) < 1200429739 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :probably better than if i compiled them to machine code < 1200430035 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: still, it'll always get slower over time < 1200430046 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :eventually taking years to perform one duplication. < 1200430064 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :unlike, say, an interp, where you can easily just concat the code and it's constant < 1200432779 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric : what should i call them? < 1200432787 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Depends on what they actually /do/ if they're not functions :P < 1200432816 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :((ab)cd)ef < 1200432818 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :gets unrolled. < 1200432832 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i.e. the nesting is removed and each was previously made into a function but now they're made into "case"s in switches < 1200432837 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :they're called 'blimps' now. < 1200433259 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: my new compiler appears to work, apart from output with stuff wrapped by a < 1200433278 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and, of course, dup is still recursive and could die without warning < 1200433329 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it produces neatly indented C and you can either have checks & nice error messages, or no checks and no error messages and SPEED < 1200433361 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh dear < 1200433365 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i can has memleak in (:^):^? < 1200433374 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :need more free()ing in the prelude methinks < 1200433398 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hm, no < 1200433400 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :nothing i can do < 1200433402 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its perfect < 1200433544 0 :jix!unknown@unknown.invalid QUIT :"CommandQ" < 1200433565 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok, output works now < 1200433586 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and it even does TCO! < 1200433677 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :actually, TCO of underload is trivial < 1200433687 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :since it'll ALWAYS be the last instruction in your () or program < 1200433700 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Shit % ./quine < 1200433700 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :zsh: segmentation fault ./quine < 1200433710 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :err < 1200433712 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :actually a factorial < 1200433714 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but i call it quine :P < 1200433722 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :o_O < 1200433735 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: "runscheme unlambda.scm > quine.c" in history... < 1200433744 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ah crap < 1200433758 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :another lovely mutuually-recursive functions < 1200433763 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :overloading the c stack < 1200433777 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :umm < 1200433782 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :over 85000 < 1200433785 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :90000 < 1200433787 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :stack frames.. < 1200433790 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::| < 1200433816 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Do I have a bug or does the factorial prog really curse tat much < 1200433837 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ACTION runs it in the JS interp and sees < 1200433843 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well, there was an awful lot.. < 1200433884 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Yep, most definately. < 1200433889 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :A bug. < 1200433906 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: My C is indented now. You must read it! :P < 1200433925 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION runs away screaming < 1200434011 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: http://rafb.net/p/ubHcrP65.html Have fun! < 1200434019 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1200434046 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :there should be a trivial infinite loop, actually... < 1200434054 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's 1 and 5 < 1200434059 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :they call each other until the stack runs out < 1200434068 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Wait, WTF? < 1200434072 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :How can that happen? < 1200434099 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1200434101 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :0 and 5. < 1200434111 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Weird, how can 5 call 0? < 1200434144 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :why is 6 afraid of 8? < 1200434149 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er wait < 1200434155 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :of 7 < 1200434172 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :groan < 1200434183 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but seriously: 0 is the main program, and is never pushed to the stack < 1200434187 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :how does 5 call it? < 1200434289 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: DOEST THOU KNOWEST? < 1200434297 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh duh < 1200434306 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i totally don't handle one thing properly < 1200434307 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :cdr. < 1200434310 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :or inner. < 1200434464 0 :GreaseMonkey!n=saru@219-89-40-70.dialup.xtra.co.nz JOIN :#esoteric < 1200434580 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yikes < 1200434585 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'll be inlining a lot of code with CALL < 1200435477 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyone know if 5a636f6c is some kind of magic number? < 1200435569 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1200435575 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyone alive? GregorR? oerjan? < 1200435579 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklokok? < 1200435599 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :could you run this: http://rafb.net/p/cpVqur31.html (just "gcc blah.c -o blah") and tell me if it segfaults or what? < 1200435605 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and if it segfaults, the last number it prints out < 1200435759 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyone?! :P < 1200435761 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey?! < 1200435767 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq? < 1200435771 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Slereah? < 1200435832 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :ehird`? < 1200435833 0 :RedDak!unknown@unknown.invalid QUIT :"I'm quitting... Bye all" < 1200435849 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey: see my previous message < 1200435855 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :just before "and if it segfaults," < 1200435927 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No? < 1200435938 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: No what < 1200435957 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :doesn't segfault here < 1200435979 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1200435988 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :can you both copy the output, all of it, and paste that somewhere? < 1200435990 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :very curious.. < 1200436104 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/t6PgUx72.html < 1200436153 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :6044d0 < 1200436161 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No segfault. < 1200436176 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :ok, i run linux, i'm assuming pikhq runs windows < 1200436184 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :you can tell by the pointers < 1200436193 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :x86_64-pc-linux-gnu < 1200436198 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :wtf? < 1200436221 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey: hmm, but no actual output apart from that? < 1200436232 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1200436239 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no factorial output even? < 1200436240 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1200436242 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :can you do: < 1200436245 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :compile it with -g < 1200436248 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :gdb it < 1200436251 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :start; cont < 1200436252 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bt < 1200436257 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and give me the first few lines of backtrace? < 1200436264 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :same output with g < 1200436272 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :actually, just a mo < 1200436284 0 :oerjan!unknown@unknown.invalid QUIT :"Good night" < 1200436362 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :#0 _copy (src=0x804b008, dest=0xbfa170d4) at poop.c:65 < 1200436366 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :#1 0x080487b0 in dup () at poop.c:91 < 1200436366 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :#2 0x08048c1e in dispatch (o=0x804b058) at poop.c:223 < 1200436366 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :#3 0x08048bd0 in dispatch (o=0x0) at poop.c:207 < 1200436366 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :#4 0x08048e38 in main () at poop.c:303 < 1200436380 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :(on the second _copy) < 1200436424 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the second _copy? < 1200436430 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :explain! :P < 1200436432 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :well, second time it breaks < 1200436449 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :(i set a breakpoint on _copy) < 1200436454 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1200436455 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :don't :P < 1200436461 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :$ gdb poop < 1200436464 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :> start; cont; bt < 1200436555 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :Program exited normally. < 1200436556 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :(gdb) bt < 1200436556 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :No stack. < 1200436566 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ah, this is a good point ;) < 1200436582 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1200436592 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if only it would fail so i could see what its doing :P < 1200436678 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hello, VERSIONer GreaseMonkey ;) < 1200436685 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :OSX, huh? < 1200436689 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OS X indeed < 1200436705 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :pOSiX < 1200436791 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1200436799 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's certified UNIX now! < 1200437567 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey: pikhq ping2 < 1200437571 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/1qEvhC25.html < 1200437573 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what about this? < 1200437582 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :for me the last thing it prints is "16", then bus error < 1200437584 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(segfault) < 1200437778 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :804cfc8 < 1200437779 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :0 ERROR -- ~ on stack of less than 2 elements < 1200437779 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :Program exited with code 01. < 1200437803 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::| Wtf. < 1200437812 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :(I'll certify YOU as UNIX) < 1200437858 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OK, on another topic... < 1200437871 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Someone implement CRTL and also suggest a way I could add arbitary output to it elegantly! < 1200437874 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :speaking of macs, what do people think of the Macbook Air? < 1200437891 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :timotiis: flimsy, plastic-looking, far too expensive, only one usb port, no ethernet, no optical drive, ... < 1200437902 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Right now you can't output any arbitary string in your program < 1200437903 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: oh yeah. But damn slick < 1200437909 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :since you need to include your state in it too and parse it back < 1200437910 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :So yeah. < 1200437913 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :4 hours battery life. < 1200437914 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :timotiis: No. It's kind of ugly. < 1200437930 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :wait, 5. < 1200438026 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: I like the look, and I'm fairly impressed with the engineering. I was raised on macs though, so I probably have an ingrained bias < 1200438040 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I'm a linux convert. < 1200438045 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :I've just ordered myself an Eee < 1200438052 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :For about a year now. < 1200438072 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :iMac, sept 06 model (I was obsoleted so quick! :P) < 1200438085 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :I've been linux only for myself for the last year or two (closer to two now), and macs before that < 1200438088 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i probably don't take as much advantage of OS X as I could < 1200438100 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but it's probably my first machine that wasn't behind when i bought it :-) < 1200438118 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :timotiis: from linux, not to < 1200438118 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :heh, this box here is hideously behind < 1200438137 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :ah, I went to linux from OS X < 1200438172 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :da, I just find it too inflexible, really. whaddya mean I can't totally change window managers in 10 minutes? < 1200438331 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you can run X11 on OS X! < 1200438540 0 :tesseracter!unknown@unknown.invalid QUIT :"Buh-Bye" < 1200438548 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :awkward silence < 1200438580 0 :timotiis!unknown@unknown.invalid QUIT :"leaving" < 1200439268 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if there's a window manager in 100 lines of C < 1200439999 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyone? ;) < 1200440075 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :take twm and strip all the newlines < 1200440090 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :(cheating, I know ;) < 1200440105 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1200440111 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :xmonad is <500, but it's haskell < 1200440154 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :dwm is <2000... < 1200440219 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh yeah 9wm is pretty tiny too < 1200440277 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ooh < 1200440284 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :there's a 58 lines-of-c one < 1200440319 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :I bet that's pretty minimal... < 1200440360 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it has sloppy focus < 1200440390 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its in debian < 1200440392 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'tinywm' < 1200440407 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://incise.org/index.cgi/TinyWM < 1200440418 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :there's a port to python, and lisp < 1200440475 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :haha tinywm is just a main() < 1200440545 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i do wish there was a way to write WMs for os x though < 1200440610 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Windows Medias? < 1200440626 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Window managers. < 1200440637 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And there is. < 1200440647 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :X.org runs on OS X. ;) < 1200440663 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You can even get it to replace Aqua. < 1200440708 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Duh, I know that. < 1200440719 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I meant integrated with Aqua < 1200440720 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :non-X11 < 1200440724 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I know what you *actually* mean, though. < 1200440764 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The answer to that, of course, is, "don't use nonfree software." < 1200440825 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: You know what's more annoying than Mac zealots? Anti-mac zealots. < 1200440837 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: I'm just anti-nonfree-software. < 1200440874 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ACTION should really write a page on this sometime so he can just link people to it instead of debating with them < 1200440917 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION should just get a copy of "Free Software, Free Society" so he can just hand it to people instead of debating with them < 1200440952 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Why will I not use Mac OS? < 1200440964 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Actually, I will. . . The minute I have a source tarball in my hands. < 1200440974 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Which is, knowing Apple, never. < 1200441007 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I find it odd that you say 'knowing Apple' while apparently disliking them. < 1200441015 0 :Asztal!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure if you hand over enough cash... < 1200441015 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Presumably, you wouldn't go researching them to death. < 1200441035 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Apple is not known for handing over source tarballs with the GPL attached. < 1200441045 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I like how you added the 'GPL' clause there. < 1200441068 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :You're either with us, or against us, obviously, so the mostly-BSD stuff you get here: http://www.opensource.apple.com/ (yes, I know it's not full OS X, obviously) doesn't count < 1200441072 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(I'd accept any free license, actually. BSD works, the current version of the APL works, etc.) < 1200441081 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but i'm not interested in a debate < 1200441120 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :They produce damned good software (usually), but it's not free, so I won't use it. < 1200441176 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: The rabid lack of reason and dogmatic assertations that involve being a free software zealot make the term 'religious' be something other than an exaggeration, I find... < 1200441302 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Whatever. < 1200441315 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION shall go off to make his computer obey him for a bit. < 1200441347 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Funny, my computer's doing t hat too. < 1200441374 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Really? I thought you wanted it to have user-replacable WMs? < 1200441393 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that was mostly a joke, actually. I like the WM. < 1200441406 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :How would you go about replacing it if you wanted to, though? < 1200441408 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Besides, any WM-programming I would do would be just as a toy, so X11 would be fine. < 1200441417 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Ah. It's obeying me, see, because I haven't told it to do that. < 1200441426 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :But it won't obey if you tell it to do that. < 1200441436 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :But I haven't told it to do that. Therefore it's obeying me. QED! < 1200441445 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :For now, maybe. < 1200441454 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Also, what if X11 didn't let you do that? Would you go and hack up the source for weeks to get that running? < 1200441457 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :No, I doubt it. < 1200441464 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No, but I'd be free to. < 1200441474 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And I'd be free to ask someone else to do so. < 1200441487 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :funny, the debates are like ones with religious fundamentalists too... < 1200441489 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'd even be free to hire someone else to do so, if I were willing to part with the money needed for that. < 1200441490 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyway, whatever < 1200441492 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1200441501 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I could hire apple to do it too actually. < 1200441506 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I'd need an awful lot of money, but I could < 1200441517 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Actually, I have enough free time, I could probably hack up the source for weeks. . . < 1200441524 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Keep in mind, I wrote PEBBLE in my free time. :p < 1200441551 0 :faxathisia!unknown@unknown.invalid PRIVMSG #esoteric :What's PEBBLE < 1200441564 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The Practical Esoteric Brainfuck-Based Language, Eh? < 1200441577 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://pikhq.nonlogic.org/pebble.php