00:00:45 Slereah: basically 00:01:02 if you have a monadic option linking output, getting a line, some pure stuff, and outputting another line, 00:01:24 the pure stuff is done lazily but the IO depends on the previous one so the evaluator HAS to do it in order 00:01:28 while requiring no changes 00:02:14 Even if the output is itself a function? 00:02:53 It will basically be like this. You've got 0, you've got + for successor, a bunch of functions. 00:02:55 -!- puzzlet_ has joined. 00:02:59 Slereah: Look 00:03:01 just go into #haskell 00:03:04 and ask loads of questions 00:03:04 :P 00:03:13 I'm scared. 00:03:22 There's people there. Talking about Haskell. 00:03:25 #haskell is the friendliest programming language channel around 00:03:34 Haskell was that black guy in cube Zero. Killed the fat guy! 00:03:46 -!- Corun has quit ("I'm nuts and Neil's a nut, therefor I am NEILS!"). 00:09:41 * Slereah be printing the Haskell tutorial 00:10:42 Slereah: YAHT? 00:10:52 The Wiki one 00:11:09 no 00:11:10 don't 00:11:11 do YAHT 00:11:13 :o 00:11:31 there, i shoved you into #haskell 00:11:36 don't worry. we don't bite. :) 00:13:30 -!- jix has quit ("CommandQ"). 00:14:41 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 00:14:45 Slereah: boo! talk! 00:15:35 YAHT is printing. 00:15:41 192 pages, it's going to be a while. 00:16:19 printing? :S 00:16:43 You know, throwing ink on paper in shapes 00:17:13 Slereah: why not just read it 00:17:31 What, you want me to read that on a screen? 00:17:37 um 00:17:37 yes 00:17:46 get a nice big font and a good pdf reader 00:17:48 it's comfy 00:17:57 you need to do YAHT interactively, anyway. it's best. 00:17:59 My chair isn't that comfy though. 00:18:37 You're going to do it away from a computer ...?! 00:18:40 You'll never learn Haskell! 00:18:43 :o 00:18:50 You need to have Emacs and ghci there, open. :-P 00:19:02 I don't have Emacs :o 00:19:06 I use Kate. 00:20:00 It has Haskell highlighting. 00:20:17 emacs!? you *never* need emacs :P 00:20:43 It's not that you need Emacs. 00:21:04 You don't need to live, either. 00:22:09 What does macs have besides highlighting? 00:22:48 Slereah: emacs is the only solution for haskell code 00:22:52 well some people use vim (masochists) 00:23:00 But why! 00:23:03 Slereah: haskell's syntax is indentation-based 00:23:08 its very tedious to do manually 00:23:12 haskell-mode for emacs is VERY smart 00:23:15 Oh. 00:23:18 it also has an integrated ghci 00:23:20 in a bottom pane 00:23:22 and all sorts of stuff 00:23:33 basically, haskell development without it is 99% repetetive key mashing 00:23:34 :P 00:24:10 Let's get them Emacs then. 00:25:06 indeed 00:25:20 Slereah: sudo apt-get install emacs-snapshot-gtk emacs-goodies-el 00:25:29 that will get you the best emacs for general use 00:25:30 No need. 00:25:34 "Adept installer" 00:25:35 no 00:25:36 no 00:25:36 no 00:25:39 that gets you the wrong emacs 00:25:40 an older one 00:25:42 and no goodies 00:25:43 D: 00:25:53 blame ubuntu 00:25:53 :P 00:26:04 Damn you Ubuntu! 00:29:51 "No space left on device" 00:29:51 SCIENTOLOGY: 00:29:52 $ grep thetans /dev/soul | xargs rm -rf 00:29:53 Oh shi- 00:32:38 -!- timotiis has quit ("leaving"). 00:34:32 Seems my porn folder is hogging space on the Linux partition! 00:34:37 Time to move it 00:38:20 * Slereah has Emacs 00:38:54 Slereah: The right one? 00:39:10 If so, then you have emacs in some menu somewhere. 00:39:19 Start it, then type 'C-h t' (CTRL-h, t) 00:39:24 follow it through. 00:39:28 now you know how to use emacs. :P 00:40:39 [Middle of page left blank for didactic purposes. Text continues below] 00:40:46 That statement is so self-defeating 00:40:56 Slereah: whatever. 00:40:59 just do what it says 00:41:01 and nothing else :P 00:41:10 oh, and throw your mouse to the back of your desk until you're done. 00:41:48 Not Mousey! 00:42:59 They use ctrl x-c-v for something else than copypasta? 00:43:04 What madhouse is this! 00:44:16 Slereah: The madhouse of productivity and speed. 00:44:24 JUST SAYIN' 00:44:29 also, Slereah ... 00:44:35 say goodbye to your arrow keys. 00:44:41 Nooooooooooooooooooooooooooooooooooo 00:44:43 Ctrl-N, Ctrl-P, Ctrl-F, Ctrl-B are your gods now. 00:45:05 (Note: emacs came around before any of these things that you're used to existed. It's not just difference for the sake of it; and most people who use emacs today find them nicer.) 00:45:20 (Emacs came around circa 1980s at MIT.) 00:45:23 What if I don't? 00:45:35 -!- puzzlet has joined. 00:45:58 I'm already not that fond of remembering which alt key actually works 00:46:34 Slereah: You've used emacs for about 5 minutes, and even then not much. 00:46:34 -!- puzzlet_ has quit (Remote closed the connection). 00:46:34 You've used ctrl x-c-v, and the arrow keys, your entire computing experience. 00:46:35 Of course you're not faster yet. 00:47:01 The arrow keys seems to work fine on their own though 00:47:45 Slereah: No. 00:47:51 They do function 00:47:54 But you shouldn't use them. 00:47:55 Just don't. 00:48:01 They make your hands move more. 00:48:15 So does the bfnp :o 00:48:34 They're not even in a cluster, or with some logic in their disposition. 00:49:22 Slereah: Back,Forwards,Next,Previous 00:49:26 And.. you can touch-type, right? 00:49:45 Pretty much. 00:49:53 home row? 00:49:59 If so, then you'll get used to it pretty quickly. 00:50:04 Home row? 00:50:08 err 00:50:10 asdfghjkl 00:50:13 you know? 00:50:22 Apparently not. 00:50:24 with the dent on f and j.. 00:50:29 and you keep your fingers there... 00:50:33 :| you can't touch-type, can you 00:50:36 don't you mean aieo htns? :P 00:50:43 olsner: i doubt Slereah uses dvorak. 00:50:48 if he doesn't know how to touch-type. 00:51:02 hehe, just saying... 00:51:05 I use AZERTY. 00:51:20 And I indeed don't need to look much at it. 00:51:41 Though I keep my eyes on the screen. Once in a while, I'm one key off and write gibberish. 00:52:18 Slereah: Do you keep your fingers onthe middle row? 00:52:25 And never stray from it, just moving your fingers to the keys? 00:52:32 If not -- you can't touch-type. Go learn that, first. 00:52:47 I do not do that, no. 00:52:58 olsner: Can you please be my window of sanity? 00:54:16 olsner: Please? :( 00:54:18 sanity!? mind you, it is in #esoteric you're asking this question 00:54:32 olsner: More than Slereah? 00:55:30 I don't really touch-type though... more like mostly-hitting-the-right-key 00:55:56 :'( 00:56:14 Same here. And really, I'm not sure I need to learn sum touch typing. 00:56:20 I'm not in a speed competition. 00:56:32 I mostly keep my fingers at the home row, but often happen to use some other position... which happens to work since I know where my fingers are 00:57:04 * Slereah doesn't even use moar than two fingers :o 00:57:12 also, coding on a swedish keyboard require a lot of AltGr:ing 00:57:36 latex is especially gruesome, {[]}\~ all being AltGr combinations 00:57:40 Slereah: what? you type with TWO FINGERS?! 00:57:41 hunt and peck?! 00:57:45 Yes. 00:57:47 Yes I do. 00:57:49 how the heck did you get into esolangs. 00:58:04 ehird`: lol D: 00:58:09 Because I can type fast enough. 00:58:11 the need for an ultra-terse language? heh 00:58:37 Plus, I don't need to type fast for esolangs. 00:58:47 oklopol: are you as sad as i am 00:58:47 Who codes in brainfuck as fast as he types? 00:58:49 D: 01:00:17 ehird`: nope 01:00:21 i'm not sad 01:00:37 i know a guy who uses two fingers and types error-free, and as fast as me 01:01:08 After using the keyboard for ten years, you know where the keys are! 01:01:08 i don't type error-free, not on the computer, not on paper. 01:01:50 and it's not that i typo, i just simply write wrong letters. 01:03:38 -!- ehird` has quit ("K-Lined by peer"). 01:04:11 It was too much for him. 01:05:20 * Sgeo starts forcing down "April 4th of September" down people's throats 01:10:14 Sgeo: btw. are you going to start something new after psox? 01:10:28 "after PSOX"? 01:10:40 Probably lose interest and go back to SL or something 01:10:49 sl? 01:11:04 Second Life. 01:11:21 oh 01:11:38 I might not know your computer stuff, but I sure know the nerd stuff! 01:12:27 i have no idea about anything. 01:27:05 Is it just me, or is DeVeDe slow? 01:27:18 Whut? 01:28:16 DeVeDe == DVD video making thingy 01:28:24 And it seems to be SLOW 01:28:30 Although it is converting from flv.. 01:42:46 * Slereah 's hungry 03:29:51 -!- immibis has joined. 03:43:39 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 03:45:46 so, did anyone actually see these? 03:45:47 http://rodger.nonlogic.org/dump/images/1203488516-art1.png 03:45:51 http://rodger.nonlogic.org/dump/images/1203488528-art2.png 03:46:42 -!- Sgeo has joined. 03:46:50 sgeo didn't. 03:47:39 -!- AlliedEnvy has joined. 03:49:58 also, here's a really old comic from several years ago: http://www.nonlogic.org/dump/images/1203565552-urge.gif 03:50:24 http://qdb.us/143471 03:50:58 Your name's John? 03:51:42 woah, since when did the qdb auto-accept shit? 03:51:47 pikhq: correct 03:51:59 Then. . . Why Rodger? 03:52:10 complicated 03:52:44 'Complicated', as in 'requires a small doctoral dissertation'? 03:53:19 olsner: Ouch; that keyboard sounds horrible for coding. 03:54:21 * pikhq prefers his US keyboard 03:54:25 AltGr? Bah. 03:54:32 Shift at the most. 03:54:41 Granted, it doesn't do more than ASCII. . . ;) 03:54:59 so your name's john and your address is somewhere near Townsend Drive, Houghton, MI 49931-1295, USA 03:55:10 yup 03:55:17 I make it no secret that I go to MTU 03:55:21 I assume that's where the dorms are? 03:55:36 you could even use the MTU directory search to dig up more info on me, like my room phone number! Woo! 03:55:42 duh....[16:53] ->> RodgerTheGreat is n=Rodger@wads-5-233-27.resnet.mtu.edu (Rodger) 03:55:55 'course, I don't have a phone plugged in, so your options will be limited 03:56:12 there is no such thing as anonymity on the internet 03:56:19 tor? 03:56:29 Anonet? 03:59:41 there appears to be at least one car driving around near mtu. Not that's important information. 04:00:04 no wait, there are quite a few for the middle of the night. 04:01:17 pretty cold over there, isn't it? 04:01:23 yes, rather 04:02:04 -14 degrees C 04:02:25 so, no comments on any of those images aside from creepy internet detective activity? 04:04:27 * immibis looks at the images 04:06:53 -!- GreaseMonkey has joined. 04:07:00 hey, GreaseMonkey 04:07:24 'lo 04:35:53 I didn;t what? 04:35:57 also, brb 05:38:09 -!- Tritonio_ has joined. 05:40:08 -!- Tritonio__ has quit (Read error: 110 (Connection timed out)). 05:52:03 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 06:03:18 -!- oerjan has joined. 06:24:01 -!- puzzlet_ has joined. 06:24:46 -!- puzzlet has quit (Remote closed the connection). 06:25:43 -!- BMeph has quit ("calls it a night"). 06:31:51 -!- cherez has quit (kornbluth.freenode.net irc.freenode.net). 06:32:19 -!- cherez has joined. 07:46:12 -!- bsmntbombdood__ has joined. 07:47:16 -!- bsmntbombdood has quit (Nick collision from services.). 07:47:18 -!- bsmntbombdood__ has changed nick to bsmntbombdood. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:03:49 -!- immibis has quit (Client Quit). 08:10:02 -!- AnMaster has quit (Connection timed out). 08:22:39 -!- GreaseMonkey has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. thx."). 08:32:44 -!- AnMaster has joined. 08:56:39 -!- oerjan has quit ("leaving"). 09:42:18 -!- jix has joined. 10:45:42 -!- Corun has joined. 10:55:17 -!- Corun has quit ("This computer has gone to sleep"). 13:05:02 -!- uvanta has joined. 13:16:11 -!- wildhalcyon has joined. 13:47:42 -!- smg has joined. 13:48:10 -!- smg has left (?). 13:54:30 -!- RedDak has joined. 14:29:29 -!- uvanta_ has joined. 14:48:10 -!- uvanta has quit (Read error: 110 (Connection timed out)). 14:58:23 -!- puzzlet_ has quit (Remote closed the connection). 14:58:27 -!- puzzlet has joined. 15:35:01 -!- olsner has quit ("Leaving"). 16:02:24 -!- olsner has joined. 16:18:53 -!- RedDak has quit (Read error: 113 (No route to host)). 16:24:01 -!- Tritonio_ has quit ("Bye..."). 16:26:38 -!- Corun has joined. 16:28:50 -!- RedDak has joined. 16:50:27 -!- timotiis has joined. 17:00:19 -!- puzzlet_ has joined. 17:00:40 -!- puzzlet has quit (Remote closed the connection). 17:12:59 -!- AlliedEnvy has left (?). 17:26:40 -!- Corun has quit ("This computer has gone to sleep"). 17:43:10 -!- olsner has quit. 17:45:23 -!- RedDak has quit ("I'm quitting... Bye all"). 17:57:59 -!- ehird_ has joined. 18:02:00 -!- RedDak has joined. 18:09:38 -!- ehird_ has changed nick to ehird. 18:10:00 -!- ehird has set topic: Is this the esoteric programming languages channel on freenode?. 18:10:37 -!- faxathisia has set topic: This is NOT the esoteric programming languages channel on freenode?. 18:18:01 -!- lament has set topic: This channel has no relationship to the world hub for esoteric language design and development.. 18:21:18 -!- faxathisia has set topic: This channel has no relationship to the world hub for esoteric language design and development, the world hub for esoteric language design and development is not even mentioned in the topic.. 18:21:40 nice one 18:30:07 -!- ehird has set topic: #esoteric powers esoteric languages?. 18:30:10 homespring! 18:35:52 -!- RedDak has quit (Remote closed the connection). 18:36:19 Interesting question, 18:36:21 "Who knows the value for the type of a lisp source file?" 18:36:53 No idea. 18:37:18 My lisp experience is limited to "What's that language with all the parentheses? Lisp? Oh" 18:37:21 -!- lament has set topic: This channel is now officially closed. Please proceed to ##overflow.. 18:37:29 aww 18:37:29 :( 18:37:59 wildhalcyon: I'd really recommend changing improving that :o 18:38:11 no 18:38:12 don't 18:38:15 learn haskell! 18:38:20 lisp is way too much fun to miss out 18:38:25 ok 18:38:28 but haskell is more fun 18:38:33 and you can write lisp in haskell trivially if you want that 18:38:37 the other way around, not so much 18:38:54 imo lisp is the prototype, haskell is the result (version 1 :-P) 18:38:57 ehird if you think so... maybe you can help fix my haskell code :P 18:39:06 faxathisia: i'll try. 18:39:08 ehird, but I find the reverse of hwat you said 18:39:22 faxathisia: what, you can write a haskell compiler in lisp trivially? 18:39:42 lisp isn't a functional language for one 18:39:45 haskell is 18:40:00 and haskell's syntax, while not as minimal as lisps, is just as simple and elegant 18:40:09 and haskell has macros, because they're just functions, thanks to laziness 18:40:17 their syntax is low-fat too -- no (lambda ...) 18:40:48 oh I was not talking about compilers (I didn't think you were either) 18:40:52 i totally agree with ehird 18:40:57 haskell is way too cool 18:41:04 :) 18:41:10 it's too cool! it must be banned! 18:41:46 * faxathisia does not care for the syntax comparison 18:42:36 but in here S Korea, there's not much people being aware of haskell 18:42:47 even no single haskell book written in Korean 18:42:48 faxathisia: syntax is fundamental to a language's style 18:43:11 -!- uvanta_ has changed nick to uvanta. 18:45:18 even better: 18:45:27 -!- lament has set topic: Sorry, this channel is full. Please proceed to ##overflow.. 18:46:04 also, haskell rules, lisp drools! 18:46:13 -!- ehird has set topic: You've reached this channel because the channel you tried to enter has been configured with join throttling (+J). There may be a clonebot attack in progress there, or simply unusually heavy interest. Please leave this channel and try again. Your channel may also be "identified-only" (+r); join #please_register for more information. If you need help, message a freenode staffer or email staff@freenode.net .... Thanks!. 18:46:24 i win 18:47:08 heh 18:48:22 I can't believe you guys are dissing lisp.. 18:48:30 academics!!! 18:48:55 faxathisia: i am not 18:48:59 i am saying that haskell is superior 18:49:08 Well have fun with your lambda calculus and type theory while I write web apps! 18:49:30 lambda calculus is from lisp 18:49:45 i mean, miranda derived it from lisp 18:49:51 and haskell derived it from miranda 18:51:39 well it's kind of irrelevant but my opinion is if you don't know Lisp you are missing out on something really great 18:52:15 faxathisia: i'm writing a web app in haskell right now 18:52:30 ehird, I was just being silly 18:52:34 and text.xhtml + network.fastcgi + a strongly typed database query module is far superior to any lisp shit you have 18:52:35 :p 18:52:42 and i know lisp 18:53:00 specifically, i have memorized all the syntax, semantics and procedures in r5rs 18:53:01 ehird, It's not superior, It's what you're finding more fun to work with at this point in time 18:53:07 and the equiv in common lisp 18:53:09 plus some more 18:53:13 ehird, I was joking with all this arc fuss around at the present 18:53:30 faxathisia: well, actually, that toolkit is far superior to any lisp web app framework that has been built yet. 18:54:07 the fact that it makes me *warm* and *fuzzy* is just a nice extra 18:54:14 I heard you can ensure W3C compliance of XML/XHTML in the type system 18:54:38 so.. currently, you gotta restart the server just to make upgrades to the site? 18:55:17 LANGUAGE WAR 18:55:25 faxathisia: no way 18:55:33 haskell development server 18:55:36 recompiles as it goes 18:55:50 when you're done, you just compile yourself a binary, static or dynamic, and upload it to your server 18:55:57 add the fastcgi info to your ws config and you're done 18:56:09 and no reloads of the server 18:56:15 just once you push out a new major change, restart the fcgi server 18:56:18 which is as simple as SIGHUP 18:56:33 ok so you have to restart the server.. 18:56:36 and you can ensure w3c compliance in the type system; but that would make Text.XHtml be absolutely crazy 18:56:38 faxathisia: no 18:56:41 if you want performance, yes 18:56:48 It's not superior to the lisp setup I had 18:56:49 but you can just run a dynamically reloading WS on the server. 18:56:54 oh 18:56:56 of course 18:57:10 99% of development time is PUSHING OUT MAJOR CHANGES ONTO YOUR SERVER WHICH TAKES 10 HOURS TO RESTART 18:57:34 faxathisia: have you thought about the performance overhead of your lisp setup? 18:57:37 Slereah, nah I use both languages 18:57:52 i don't like lisp because it's ugly 18:58:12 especially functions ending in things like p and f 18:58:25 disgusting 18:58:26 lament: that's not there in scheme 18:58:30 i know! 18:58:33 but it does have mutation and predicate annotations.. 18:58:35 ? and ! 18:58:36 which isn't ugly 18:58:39 yes 18:58:42 scheme is much prettier 18:58:42 e.g. (number? x) 18:58:45 (set! x y) 18:59:12 but scheme has terrible standartization problems 18:59:19 standardization 18:59:23 r6rs seems ... kind of ok 18:59:31 I think it's a bit too much of a superficial view 18:59:37 Better than most esoteric languages. They usually have terrible bastardization problems 18:59:45 really the names of some constants is not the matter 19:00:09 Don't be dissin' the eso dude. 19:00:32 As a bastardized language creator, I'm not dissin', just telling it like it is. 19:00:35 faxathisia: aesthetics are important 19:00:46 faxathisia: actually the main reason i haven't ever seriously tried lisp is the perceived lack of a good environment, and a perceived necessity for having one 19:00:47 Heh. 19:00:54 What's your esolangs? 19:01:02 lamet, SLIME 19:01:10 faxathisia: ie, haskell doesn't feel like you need to have a huge environment in which to work with it; a text editor and ghc is enough 19:01:14 but lisp does 19:01:22 and unfortunately such environments tend to be emacs-based 19:01:27 lament: but emacs, haskell-mode&inf-haskell, and ghc helps 19:01:27 :-) 19:01:38 and i'm not a fan of emacs 19:01:42 i am 19:02:21 beh 19:02:34 compare with squeak... now that's an environment :) 19:04:06 squeak is awesome 19:04:08 well, kind of 19:04:12 the idea is awesome 19:05:23 in any case, even if the environment did exists, something feels wrong about a language _needing_ one :) 19:05:38 feels just right for squeak though 19:06:08 there's barely a programming language in squeak 19:07:57 http://www.flownet.com/gat/papers/pch.html 19:09:30 bastardization! 19:13:27 haskell... its lazy evaluation is... elegant 19:13:47 its code is... beautiful 19:14:36 right now i'm doing a part-time job using php and it SUCKS 19:14:41 i miss haskell 19:15:32 -!- zacuan has joined. 19:15:45 -!- zacuan has left (?). 19:15:46 uur, php 19:17:32 i wanted to join that language war but i couldn't since ehird was saying everything i want to say before me 19:17:48 hahah 19:17:49 I'm not sure it was a war.. 19:17:59 I like both languages 19:18:07 uvanta: unfortunately, if i actually said that before you said it, that would just be strange, because it makes no sense when i say it 19:18:49 what you say 19:19:26 uvanta: shit, the next line is 'all your base are belong to us' 19:19:28 you can't make me say that 19:19:30 that's cruel 19:19:55 no, the next line is 'you have no chance to survive make your time' 19:20:01 is it? 19:20:02 ok 19:20:05 well 19:20:07 you just did that. 19:20:43 i don't really understand what's going on but... i'm sorry 19:27:35 I think it was my fault :/ 19:48:57 -!- ehird has quit ("Leaving"). 19:50:48 Anyone have any suggestions for what sort of commands an assembly language should contain? 19:51:16 One that will play the Super Mario theme on the PC speaker. 19:51:23 To answer your question, I don't know. 19:51:58 subleq ? 19:51:58 -!- ehird has joined. 19:52:02 Okay 19:52:03 bah 19:52:04 RSSB 19:52:14 crispy 19:52:16 Not quite sure where to go with it 19:53:04 I'm leaning towards 32-bit, but 64-bit might work also. 19:54:58 I'll probably need some sort of memory management instructions. 19:55:04 And all the usual stack instructions. 20:02:26 -!- ais523 has joined. 20:02:55 wildhalcyon: why not the MAX instruction? 20:02:58 see MiniMAX on the wiki 20:03:20 ais523 is watching you type 20:03:29 makin' me look up stuff... with the thing... 20:03:37 actually, I was reading the logs and decided I wanted to join the conversation 20:03:47 Heh. 20:04:07 So, what would the MAX instruction do then? 20:04:12 how can you read them in real-time? 20:04:24 and wildhalcyon: it can be expressed as MOVSW LODSW ADD SI,AX XCHG SI,DI in x86 assembly language 20:04:30 ais523: how long until you invent a log client that doesn't require an external log service and updates in real time without refreshing? 20:04:38 then in another version add support for sending messages? 20:04:55 basically, it copies one datum from the source to the destination pointers (which have to be set up beforehand), incrementing each pointer 20:04:57 (p.s., it's really weird when someone joins and replies to a question asked minutes before they joined :P) 20:05:16 then adds the datum at the source pointer to the source pointer, and increments it 20:05:21 then swaps the source and data pointers 20:05:34 what's the benefit of doing that now? 20:05:40 ehird: minutes? I've replied to questions asked days earlier on occasion 20:05:47 wildhalcyon: the instruction is TC by itself 20:05:49 that's not as creepy 20:06:00 it doesn't even need arguments... 20:06:02 but replying something asked minutes before seconds after joining.. 20:06:05 that is creepy 20:06:06 :D 20:06:07 Oh, well.. that's almost useful then 20:06:12 just memory to be set up correctly beforehand 20:06:17 ais523: hm, if it requires no arguments, then ... oh 20:06:18 :) 20:06:28 well, you can pass around minimax programs really easily 20:06:39 file = memory ... sentinel code ... 20:06:40 where 20:06:50 code = length of source encoded in base-255 20:07:01 since MAX MAX MAX ... is just unary 20:07:02 :-) 20:07:14 I generally treat the program as being the contents of memory before the interp is run 20:07:24 ah 20:07:30 in DOS, you just append the program to the interp and it dutifully loads it into memory at the right place 20:08:03 there's a 14-byte interp on the wiki that works like that (no I/O, though) 20:08:49 it even handles quitting when you jump to a location 270 bytes (that is, 135 words) before the start of the program 20:09:14 Damn it, no wonder I'm confused. 20:09:40 I thought you meant regular wikipedia... didn't pay attention where you said "on THE wiki"... 20:10:05 I normally mean Esolang when I say 'wiki' on this channel without a qualifier 20:10:18 I'm not blaming you. It was my error 20:19:44 Wow, ais. I really don't understand miniMAX. 20:19:50 I get Fractran, but not miniMAX 20:22:12 it's kind of hard to explain 20:22:22 the example makes it just-about possible for other people to understand sometimes 20:22:58 each command alters the previous command, and sets the distance between the command after it and the command before it 20:23:27 I sort of get that part, but I don't get how its set up I guess. 20:23:35 Plus, its not really helpful for my assembly language. 20:24:06 wildhalcyon: the program is just loaded into memory, and the docs for the interp define where the 1st and 0th commands start 20:24:08 so it isn't portable 20:24:18 it was simply designed for very small TCness 20:24:26 Fair enough 20:24:44 (of course the 14-byte interp isn't TC because it can only address 64K memory, because it's a DOS .COM file) 20:34:30 ais523: I am trying to write a fixed-point function in C 20:34:33 I do not believe it is possible 20:34:37 without inline asm 20:34:53 what exactly do you mean by 'fixed-point function' in this context? 20:35:00 and why would inline asm help? 20:35:12 because you can do closures and stuff with inline asm 20:35:14 anyway, ais523 -- 20:35:32 fix(F) => fun(...) => F(fix(F))(...) 20:36:36 the naive implementation gives you an infinite loop because C is eager 20:36:51 I remember reading something about an eager implementation of Y, though, I may have to look it up 20:37:01 ais523: c does not have closures 20:37:04 you cannot code the y combinator in it 20:37:11 anyway 20:37:13 eager Y is Z: 20:37:31 Z = \f. (\x. f (\y. x x y)) (\x. f (\y. x x y)) 20:37:49 ais523: the point is you cannot return the appropriate function 20:37:58 that iz, 20:37:59 oh, of course 20:38:00 in Z(f), 20:38:05 f cannot return something meaningful 20:38:51 lambda calculus is kind of tricky in C anyway, what with the total absence of a lambda operation 20:39:00 ais523: it's impossible. 20:39:03 lambda calculus uses closures. 20:39:06 c does not have closures. 20:39:13 short of writing an interpreter; you cannot do lambda calculus in C. 20:40:37 that's what I meant by 'kind of tricky' 20:40:47 in JavaScript, OTOH, it's built into the language 20:40:51 and that acts kind of like C at a distance 20:41:45 ais523: speaking of which 20:41:55 if you reduce haskell to: 20:42:03 a basic type system that at a glance looks like it, 20:42:10 simplified version of the syntax, 20:42:14 just standard lazy evaluation 20:42:23 and only a few standard things (like, an IO monad) 20:42:31 ais523: how short do you think an interpreter could be written? 20:42:54 not sure 20:43:06 http://www.laserpirate.com/tinyml.html tiny ml in <700 lines 20:43:09 so, i think not too much 20:43:13 with a minimal Prelude, maybe a kilobyte or two 20:43:30 hmm... 2K is the IOCCC size threshold 20:43:37 (4K counting whitespace) 20:43:44 but C is not a very good language for golfing 20:45:12 incidentally, I topped up anagolf to shinh's requested 5 problems at a time 20:45:23 and got several entries within a couple of minutes of posting the problem 20:46:10 ais523: i meant 20:46:13 LOC 20:46:14 mainly 20:46:23 bytes is more fun 20:46:27 well 20:46:31 bytes mean nothing to me 20:46:37 I'm pretty sure it's possible to write a Haskell interp in 1 line of code, in Brainfuck 20:47:46 because newline has no meaning to a Brainfuck implementation, or ought not to 20:48:08 (I came across a BF interp online that errored on any characters not in ,.<>[]+-, and also errored on EOF) 20:48:25 (I'm pretty sure most BF standards would therefore not consider it conforming) 20:49:09 ais523: I mean reasonable looking code. 20:49:11 :-| 20:49:23 Hm. 20:49:36 I'm trying to make a factorial on LB. 20:49:49 LB? 20:49:50 But I feel I'm recreating an imperative version of the factorial 20:49:55 Lazy Bird. 20:49:59 Lazy Bird, presumably 20:50:33 Slereah: in Unlambda-like languages, the iterative and recursive versions of factorial tend to come out identical 20:51:01 because when you translate the loop of the iterative version into a recursive function so that it can be expressed in the language, you end up with code identical to the recursive version 20:51:14 My idea so far is using an ordered pair, first element being the result, second being what's left. 20:51:18 at least if you make the loop count downwards to make the termination condition easy 20:51:22 ais523: btw, all factoring programs i've found say their algorithm is dumb 20:51:27 so why don't they improve it?! :| 20:51:50 So factorial 5 would start out as <1,5> and finish on <120,0> 20:51:55 Or something. 20:52:14 Slereah: both the recursive and iterative versions work like that 20:52:19 Oh. 20:52:22 Thank goodness. 20:52:38 in fact they're so similar it's hard to tell the difference; on occasion they can be identical 20:52:51 because the argument to a recursive function is an argument 20:53:13 a variable in an imperative version has to be converted to an argument to be remembered between iterations of the loop 20:53:19 and so the two functions end up the same 20:55:18 Slereah: I just read your note about the difficulty of I/O in Lazy Bird 20:55:34 some sort of monad is generally the best option in pure lazy languages 20:55:35 Are you going to tell me about monads? 20:56:15 -!- oerjan has joined. 20:56:21 a monad would be a bit hard to implement in an efficient form in Lazy Bird because input would need to return two arguments and output would need to take two arguments 20:56:45 taking two arguments is fine due to currying, but returning two would mean some sort of officially sanctioned version of an ordered pair 20:57:18 Well, my first thought was to use some sort of function > such that ``>[A][B] converts to `[A][B] and then B is evaluated 20:57:46 so some sort of eageriser 20:57:57 Yes. Anti-d. 20:58:03 but it's kind of hard to ensure that the eageriser runs at the right time, because it would itself be lazy 20:58:18 and more importantly the thing running it would be lazy 20:58:23 Is there a third choice? 20:58:25 the program would have to be full of eagerisers 20:58:32 ais523: by the way, i learned a disturbing thing yesterday 20:58:38 Yes, that's the problem I saw. 20:58:41 the Y combinator cannot be typed in any language that does not allow arbitary recursive types 20:58:43 and, with them, 20:58:51 every lambda calculus term can be typed as "a = a -> a" 20:58:58 thus, strong typing is destroyed 21:00:02 that's a bit exaggerated i think 21:00:33 just thinking about monads in general... suppose you write infinite cat (that doesn't terminate on EOF) in a language like Haskell 21:01:04 hm wait 21:01:30 if you do it by constructing an infinite list of commands input >>= \x -> output x >> input >>= \x -> output x >> input and so on, is there any guarantee that any of the commands actually runs rather than the interp spending an infinite length of time constructing the list without evaluating any of the monad-chained functions? 21:01:39 the list of commands, that is 21:01:49 oerjan: no, it's true 21:01:55 and that's from #haskell, too :P 21:02:05 ais523: um, yes 21:02:09 because ... that construction is lazy 21:02:10 :P 21:02:23 it's an issue as to what is more lazy, the I/O or the list construction 21:02:23 ehird: hm, there may have to be a type that every term can be type with 21:02:27 the interpreter executes as little as possible of the chain creation, runs that action, does it again, etc 21:02:31 oerjan: yes 21:02:33 think about it,. 21:02:47 Let's call the lambda calculus function type T. 21:02:54 now every LC function takes an LC function and produces an LC function. 21:02:55 T = T -> T 21:03:12 a = a -> a 21:03:14 the version of intersection types i read about that could type every weakly normalizing term used an omega for it. no other recursive types necessary 21:03:17 (a = a -> a) is the type of all LC terms, and will type in a language that can type Y, thus strong typing is destroyed. 21:04:12 that type is not necessarily in your system 21:04:22 oerjan: to type Y, it must be 21:04:29 because: 21:04:33 Y :: (omega -> a) -> a was one legal type for Y, i think 21:04:53 Y takes a function, and returns (let's say -- a) 21:05:07 ehird: note that a system need not have principal types. it may be that you need a different type for Y dependent on what you apply it to 21:05:13 Now, if we say that Y is equiv. to '\f -> f (Y f)', then, what type is passed to the function? 21:05:14 incidentally, is the topic a real error message that can actually come up, or was it just faked to look realistic? 21:05:21 the return type of Y f, that's what. 21:05:31 And the function returns some value 'b' -- but this must be the same value passed to a 21:05:39 We get (a -> a) -> a, but that's just the fixed point type 21:05:47 If you read the actual lambda definition of Y, it has an infinite type. 21:05:59 -!- wildhalcyon has quit ("ChatZilla 0.9.81 [Firefox 2.0.0.11/2007112718]"). 21:06:00 ehird: you are assuming a system in which everything has exactly one type 21:06:18 i'm assuming a sane system? well, that's odd. 21:06:36 ehird: there are _many_ interesting systems without that property 21:06:49 ehird: noticing when you've made assumptions and acting a different way is a good way to come up with an interesting esolang 21:07:10 oerjan: random note -- you used to code ocaml right? 21:07:21 how can i tell the ocaml repl to load an ocaml source file and let me access its variables? 21:07:30 ehird: a little bit 21:07:51 open ? my memory is vague 21:08:57 * Slereah 's going to add > 21:09:06 At least it will be easy to insert in the interpreter. 21:09:38 interesting 21:09:39 ehird: i think the repl syntax in ocaml is almost identical to file syntax 21:09:39 ocaml -rectypes 21:09:40 - : ('a -> 'a) -> 'a = 21:09:43 i see no recursive type there 21:09:44 (for Y) 21:10:18 however, it doesn't actually run of course 21:11:14 another legal type for Y in that intersection system would be Y :: ((omega -> a) /\ (a -> b)) -> b 21:11:38 and so on, for any chain of types starting with omega 21:11:44 oerjan: hm, how do i explicitly type annotate an ocaml function? 21:11:53 if i know that, then I'm going to go fsck up ocaml's type system 21:12:07 ehird: with : somewhere 21:12:14 somewhere 21:12:14 great 21:12:23 possibly just before the = 21:12:53 well, I just convinced ocaml that 'a -> 'a is a valid type for Y. 21:13:01 though 21:13:01 - : ('a -> 'a as 'a) -> 'a = 21:13:09 i think i typed the argument 21:13:13 hm 21:13:14 can't be 21:13:45 is that precedence right? try parenthese around ('a -> 'a) to be sure 21:13:50 *s 21:13:55 let y : ('a -> 'a) = 21:14:57 ah i see 21:15:03 "A as B" is "B = A" 21:15:07 # Y.sii;; 21:15:07 - : ('a -> 'b as 'a) -> 'b = 21:15:37 but you can't put that in a source file heh 21:15:45 ah 21:16:13 oerjan: there should be a minihaskell for experimenting with stuff like this 21:16:17 like i asked ais523 about earlier 21:16:24 it's not legal base syntax since basic ocaml does not allow -rectypes 21:16:24 i guess without layout, so the parser can be dirt simple 21:16:30 and stuff. 21:16:34 oerjan: i did -rectypes 21:16:35 hh 21:16:36 *heh 21:16:42 and, if we had a minihaskell 21:16:43 i mean the basic is without it 21:16:47 we could just add the a = b rule 21:16:53 stop misinterpreting me! 21:17:20 y :: (a = a -> a) -> a 21:17:36 now wait 21:17:41 y = \f -> (\x -> f (x x)) (\x -> f (x x));; 21:17:51 the usual type is (a -> a) -> a, for fix anyhow 21:18:24 oerjan: yes, but this encodes it better 21:18:25 it's just that you cannot get that building from just lambda terms with the usual type system 21:18:32 that one kind of ignores the whole recursive 'a' thing 21:18:39 oh, wait 21:18:40 you are right 21:18:41 heh 21:18:41 :) 21:18:54 well, a nicer way of saying it (makes more sense to humans): 21:19:12 y :: (a -> b) -> b where a = b 21:19:47 churchN :: a = (a -> a) -> a -> a;; 21:19:48 heh 21:19:49 i think the amount of humans for which that makes more sense is a pretty thin sliver :D 21:19:57 (as in, behaves the same as pure LC churches) 21:20:14 oerjan: it avoids starting to read it as a normal type then having to backtrack to get the recursion 21:21:36 in System F (where everything terminates) forall a. (a -> a) -> a -> a is the type of _precisely_ the church numerals 21:22:08 oerjan: aha, but that's not the LC church numerals 21:22:08 because there are more constraints on what can be passed in 21:22:10 System F btw does _not_ have principal types 21:22:35 ais523: anagolf should add emacs lisp 21:22:35 xD 21:22:51 I'd like to see Underload as well 21:22:58 ais523: egotist 21:22:58 but I'm biased 21:22:58 :P 21:23:54 hm 21:23:57 can you do stdout with elisp 21:24:16 probably it would be better to do it the same way as they did vi 21:24:31 input arrives in the buffer, output is the final version of the buffer 21:25:11 * ais523 keeps typoing the word 'buffer' with g rather than f. It's probably because their finger doesn't move back far enough after pressing the 'b'... 21:25:28 oh, bugger. that must be bad. 21:25:42 (badum-tish) 21:25:52 * oerjan is starting to get the impression from the topics that people here don't _want_ more channel members :D 21:25:53 luckily I've memorised backspace backspace f f as part of the way my fingers have learnt the word... 21:25:53 ais523: actually, hardly 21:26:01 the emacs functions for buffer stuff are hideously verbose 21:26:18 elisp is hideously verbose as a language 21:26:20 oerjan: quite :D 21:26:28 and 'format' isn't that wordy 21:26:42 ais523: (require 'cl) makes elisp quite terse 21:27:00 I'm unaware of cl 21:27:42 cl=common lisp 21:27:46 every sane elisp coder uses it 21:27:49 (if there are any,,) 21:27:58 basically, its a lot of useful stuff from CL 21:28:07 and presumably anagolf would bundle it 21:28:26 since none of us is sane, why are you mentioning it? 21:28:33 ehird: I have coded elisp before. I have never used the cl package, and I consider myself relatively sane, although some may disagree 21:28:42 the fact that I'm in #esoteric is certainly evidence to the contrary 21:28:49 oerjan: I meant 'sanity check' style :P 21:29:00 ais523: well, then start using it. it's the only way to avoid dying at the hands of elisp 21:29:00 :P 21:29:22 nowadays I mostly only use elisp for writing major modes for esolangs 21:29:22 ehird: maybe you mean coder of sane elisp, not sane coder of elisp? 21:29:32 oerjan: yes, thank you 21:29:33 :P 21:29:40 ais523: can i have esolangs.el, btw? :P 21:29:46 not on this computer 21:29:50 although I think I pasted it a while ago 21:29:52 :< 21:30:22 http://pastebin.ca/894042 is the version I pasted, apparently 21:30:54 although I think that version has a bug in the BF indentation 21:31:13 or at least, a strange-looking style choice where closing ] has to be on the same line as a lot of code to look sensible 21:31:38 ais523: btw, 21:31:44 you should add (provide 'esolangs) 21:31:46 actually, that seems to be the version with the indentation corrected 21:31:47 for just importing the lot 21:31:48 :P 21:31:55 it's actually probably the most recent version 21:31:59 and that's a good idea 21:32:28 I use a direct load of that file and (esolangs-recognize-extensions) in my .emacs 21:32:50 ais523: could you lowercase the brainfuck mode name? 21:32:52 and then get annoyed when people insist on using .bf as an extension for Brainfuck files... 21:32:52 its purer 21:32:53 :P 21:33:08 omg, you highlight ,. +- <> the asme 21:33:09 :( 21:33:17 the word "brainfuck" starts with a capital when at the start of a sentence 21:33:33 a modelien is not a sentence 21:33:45 modelines are generally written in title case 21:33:50 that is, every word initcaps 21:33:54 also, ais523, that does no indentation of brainfuck at all 21:33:55 :( 21:33:57 after all, words like 21:34:08 (define-key brainfuck-mode-map "\r" 'esolangs-indent-newline-indent) 21:34:08 (define-key brainfuck-mode-map "\n" 'esolangs-indent-newline-indent) 21:34:10 bad bad bad! 21:34:12 ehird: it ought to 21:34:12 don't do that. 21:34:14 override C-j. 21:34:16 not \r\n 21:34:17 I did 21:34:24 not \r\n. 21:34:32 maybe I should have a minor mode that works on all of them that overrides \r and \n as well 21:34:37 no 21:34:40 people do that in their own .emacs 21:34:44 I'm used to auto-indent, which I use in other modes 21:34:51 ais523: set it up in .emacs. 21:35:04 also, try (kbd ...) for keyboard keys 21:35:07 I don't use it in every mode though, I'm inconsistent 21:35:07 e.g. 21:35:09 (kbd "RET") 21:35:09 point taken, though 21:35:11 (kbd "C-j") 21:35:22 ais523: example of indenting using brainfuckmode? 21:36:06 just typing the code in ought to work 21:36:16 ,[(C-j) 21:36:19 < the number of spaces at the start of each line is brainfuck-indentation-level times the number of [] levels you're inside 21:36:57 so..1 21:36:58 at the start of a line, or (if the line starts with ]) just after the initial ] 21:36:59 but i'm at level 0 21:37:14 what version of emacs are you using? 21:37:22 I'll try it on this computer, which runs an ancient version 21:37:26 21.1.1 21:37:33 and just then i got it to indent 2 spaces 21:37:36 but cannot reproduce 21:37:45 aha 21:37:49 ,(ret) 21:37:52 [abc(ret) 21:38:01 def[(IT IS INDENTED WHEN PRESSING [) 21:38:04 --> 21:38:05 def[ 21:38:28 I have 20.4.1 21:38:35 ais523: it ignroes the first level of indentation 21:38:36 it seems 21:38:45 also 21:38:51 sometimes it disables RET! 21:38:55 'indentation would be in left margin' 21:38:56 and just get "Symbol's definition as function is void: move-beginning-of-line" 21:39:03 i did: 21:39:04 [(RET) 21:39:05 ] 21:39:08 and now i can't do in those [] 21:39:11 *go 21:39:21 definitely looks like there's an off-by-two error for you 21:39:27 that code clearly needs cleaning up 21:39:27 and maybe some logic bugs. 21:39:35 what about the Forte indentation? Does that work? 21:39:46 ais523: i don't know forte 21:39:48 (it right-justifies the line numbers and left-justifies the statements) 21:40:02 ehird: just type in some BASIC, it looks much the same to a syntax higlighter 21:40:42 filext= 21:40:47 30 LET 9=7 21:40:48 40 PRINT 6*9 21:40:50 that sort of thing 21:40:53 -!- jix has quit ("CommandQ"). 21:40:55 filext=.4te 21:41:13 Start loop(ENTER) 21:41:20 ->startloop indented one tab, current lien on one tab 21:41:34 there isn't a loop instruction 21:41:42 oh 21:41:46 i copied the examplenotanexample 21:41:46 xD 21:41:47 it just indents the line number into a one-tab margin and the rest of the statement after it 21:42:06 100110 LET 110=110+3 21:42:08 109 LET 100110=108 21:42:09 110 PRINT "Looping...": LET 108=108+3 21:42:17 that's how you do a loop in Forte 21:42:29 ais523: the 10 rem won't highlight properly 21:42:29 btw 21:42:49 oh, because of the embedded colon-newline in the comment 21:43:01 Emacs does that for other langs too, though, like // this is a C comment over 2 lines \ 21:43:07 this is also a C comment 21:43:21 doesn't highlight the second line 21:43:23 hm 21:43:25 emacs sucks 21:43:26 :P 21:43:41 out of all the syntax higlighters I've tried, Kate's seems to be best 21:43:46 but Emacs has better indentation 21:44:44 ais523: the forte constants is: 21:44:49 map Integer -> Integer 21:44:55 default=[1=>1,2=>2,...] 21:44:56 right? 21:44:58 yes 21:45:00 and the key integers never morph 21:45:09 all integers can morph 21:45:20 but generally it's a stupid idea to change the important ones like 1 21:45:25 ais523: so wait, the keys '1' and '2' could morph in that default? 21:45:28 so if i did 21:45:30 LET 1 = 2 21:45:32 it would become 21:45:37 default=[2=>2,2=>2,...]? 21:45:41 i highly doubt it 21:45:42 it would become 21:45:46 default=[1=>2,2=>2,...] 21:45:49 oh, yes 21:45:53 if you think about it like that 21:46:07 it may be easier to think of it as map String -> Integer 21:46:16 default=["1"=>1,"2"=>2,...] 21:46:21 yes 21:46:23 except that that is misleading 21:46:26 exactly 21:46:30 because every pair of parens triggers an extra conversion 21:46:31 my parser will parse the numbers as Integer 21:46:44 ais523: does this work 21:46:45 as in: 21:46:45 LET (2+2) = 5 21:47:11 yes, according to the spec 21:47:18 or at least it would do if you remembered to give the line number 21:47:29 ais523: so I relaly need a map of expr->expr 21:47:35 because presumably '4' wouldn't result in '5' 21:47:38 just 2+2 21:47:42 and what about (2+3)-1? 21:47:48 no: 21:47:53 10 LET 4=5 21:47:57 20 PRINT (2+2) 21:47:59 will print 5 21:48:04 ais523: Okay, what about: 21:48:05 so will (2+3)-1 21:48:10 10 LET (2+2)=5 21:48:14 20 PRINT ((2+3)-1) 21:48:23 you get the answer 5 21:48:31 an integer becomes completely unusable once it's been redefined 21:48:31 ais523: okay, so EVERY operation has indirection 21:48:33 -!- Sgeo[College] has joined. 21:48:37 Hi all 21:48:59 it becomes quite interesting because once an integer's been redefined, you can never use that integer's original value again 21:49:06 ais523: what is forte's (1/0) 21:49:08 and can I do 21:49:11 LET (1/0) = 4 21:49:14 PRINT (1/0) 21:49:30 1/0 isn't treated sensibly by the interp I came up with 21:49:34 probably it's just an error 21:49:47 although making it a constant that can be assigned to would probably be more interesting 21:49:56 maybe I should add 'nullity' too... 21:50:01 lol 21:50:08 ais523: what would my example do 21:50:31 whatever dividing by 0 does in Perl 21:50:39 okay 21:50:40 probably die with an error 21:52:00 it's probably also worth pointing out that the reference interp tends to go into an infinite loop if there are any errors in the original program, because I don't check for them, and likewise the language will infinite loop if no explicit END statement is given 21:52:35 also worth mentioning that the line numbers are the only things that effect the order in which lines are run, and yes, they're indirected to 21:52:38 s/to$/too/ 21:53:26 so you loop by redefining the numbers of earlier lines to have higher values so they're after the present line... 21:53:27 type Program = M.Map Integer Statement 21:53:30 :P unsorted programs 21:54:28 INPUT. This works like LET, except that the redefinition of the number is taken from the input, not from an expression. The expression gives the number to redefine. 21:54:28 GET. This works like INPUT, except that it inputs a character and redefines the number given by the expression to its ASCII code. It inputs 256 on end-of-file. 21:54:37 ais523: so INPUT takes a decimal number? 21:54:41 yes 21:54:52 I believe it's completely unusable, sort of like gets in C 21:55:11 because there's no restriction on what numbers the user can input 21:55:23 GET and atoi code are more useful in practice 21:55:31 ais523: if i 'LET 3 = 4', then get the input '3', is it redefined as '4'? 21:55:53 LET 3 = 4 21:55:58 INPUT 5 21:56:06 will set 5 to 4 if the user inputs '3' 21:56:13 and I'd remembered to put line numbers in 21:56:27 there's no way to use an integer once it's been redefined... 21:56:52 okay 21:57:00 ais523: so even LET's lhs has the indirection? 21:57:09 yes 21:58:58 putInt :: Integer -> Integer -> Forte () 21:58:59 putInt a b = update (\m -> M.alter (\_ -> b) a m) 21:59:01 tee hee 21:59:06 ais523: what about 21:59:09 LET 5 = 1 21:59:14 LET 4 = 2 21:59:16 err 21:59:16 wait 21:59:17 no 21:59:19 LET 5 = 1 21:59:21 LET 1 = 2 21:59:22 PRINT 5 21:59:28 you get 2 21:59:36 ais523: so i need to iterate my finding 21:59:43 yes 22:01:18 BTW, looking at the interp working can be quite interesting 22:01:35 if you change all occurrences of 'next' to 'next and print' you'll be able to see what it's doing 22:02:18 ais523: welp i have getInt/putInt written 22:02:49 ais523: gosh, the main loop will be hard 22:02:50 xD 22:16:52 -!- ais523 has quit ("going home"). 22:21:28 Shit. For some reason, input doesn't work anymore. 22:21:39 SlereahShit. For some reason, input doesn't work anymore. 22:21:48 You certainly said something successfully 22:22:05 Yes, but not on the lazy bird! 22:22:37 Hm. 22:22:47 Ah. 22:22:48 UnboundLocalError: local variable 'c' referenced before assignment 22:23:22 lazy bird? 22:24:46 Sgeo[College]: HMM LET'S THINJK 22:24:51 OH COULD IT BE AN ESOLANG?? 22:24:54 WEIRD IDEA. TOTALLY. 22:24:58 :| 22:26:18 Bye al;l 22:27:32 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client"). 22:28:42 Challenge: 22:28:51 write the shortest C program that interprets a turing complete language. 22:28:52 Anything goes. 22:29:34 OISC? 22:29:53 Slereah: Hardly; a brainfuck interp would be shorter. 22:30:00 Orly? 22:30:16 Well, a bitchanger would be even shorter :o 22:30:29 * faxathisia checks the wiki for something to try 22:30:50 I never tried to make an OISC interpreter, but it doesn't seem bigger than BF to implement 22:31:10 lol 22:31:14 remember GOTO++ 22:31:19 Abject oriented programming 22:32:04 oh btw -- doesn't have to be valid ansi 22:32:08 it can be broken k&r if you want 22:32:10 as long as it compiles 22:32:46 oh; and it can be non-turing-complete due to e.g. integer/array limits 22:32:57 It would be hard otherwise! 22:33:02 but if a platform had infinite arrays and ints; if the program was TC; then it's ok 22:33:06 Slereah: well, no. realloc() 22:36:33 mwahaha: 22:36:34 l(i){R i=getc()?i?getc()+l(i);} 22:36:42 faxathisia: are you that evil?! 22:37:00 er 22:37:02 s/second?/: 22:38:43 no :( 22:38:51 I don't even know what that does 22:39:01 faxathisia: well, its tweaked a bit now 22:39:03 current semantics: 22:39:08 it reads a character 22:39:12 if it's \0, 22:39:25 then it reads one character, subtracts one from it, and adds it to (RECURSE) 22:39:26 otherwise, 22:39:31 it returns the character minus one 22:39:53 faxathisia: basically, it lets me read in trivially as chars (i.e. no bounded buffers) but get anything that can fit into an int 22:39:55 for example: 22:40:04 00 02 00 02 02 22:40:13 is (2-1)+(2-1)+(2-1) 22:40:15 so, it's 3 22:40:55 the language is called 'onest' 22:40:57 a pun on 'forth' 22:42:04 language ext=.1st 22:43:56 er 22:43:58 s/getc/getchar 22:44:21 l(i){R i=getchar()?i-1:getchar()-1+l(i);}main(a){R l(a);} 22:44:26 current interp. 22:44:31 o_____o 22:44:36 faxathisia: it doesn't run anything yet. 22:44:37 of course. 22:44:41 I think I will be beater but trying anyway 22:44:49 % ./onest < 3.1st; echo $? 22:44:49 2 22:44:52 talk about off-by-one errors.. 22:50:39 faxathisia: ok 22:50:45 take a look at my official reading routine :P 22:50:46 l(i){R(i=getchar())?i-1:getchar()-1+l(i);} 22:51:09 (R is return) 22:51:15 let me expand that: 22:51:49 l(i){i = getchar(); if (i) { return (i-1); } else { i2 = getchar(); return (i2-1)+l(i); } } 22:51:51 ehird: for your main loop: findMinWithKey . snd . split currentLineNo $ currentProgram 22:51:56 faxathisia: basically, the i perameter is ignored 22:52:10 faxathisia: it is just so we can assign to an integer variable (params default to int, remember?) without a declaration 22:52:18 and we do l(i) to pass along an int to assign to, etc 22:52:20 er wait 22:52:24 haha 22:52:26 main() calls l with argc, which is good enough, since it's ignored 22:52:28 sweet 22:52:35 *minViewWithKey 22:52:54 *fst . 22:52:58 faxathisia: and i believe main() will be recursive 22:53:10 I couldn't have main recursive :[ 22:53:15 why not 22:53:21 * faxathisia boots with main(g,v){l(g,1[(char**)v]);} instead 22:53:31 that is pretty hardcore 22:53:32 heh 22:53:37 because I want to iterate argv[0] 22:53:39 but ... why are you casting? 22:53:44 opps I mean argv[1] 22:53:45 that's just a warning! 22:53:59 1[v] should work hunky dory, i think 22:54:08 that is: fmap fst (minViewWithKey . snd . split currentLineNo $ currentProgram). i think. 22:54:32 faxathisia: all my functions take an implicit integer parameter to assign to 22:54:32 XD 22:54:41 my execution function starts: e(i){i=l(i);... 22:54:42 main(int g,char**v){l(g,1[v]);} 22:54:42 main(g,v){l(g,1[(char**)v]);} 22:54:47 that's why 22:54:54 main(g,6 --- quit: timotiis ("leaving")