00:22:50 -!- oerjan has quit ("Habemus panem tostum?"). 00:22:58 -!- timotiis has quit (Read error: 110 (Connection timed out)). 00:27:50 -!- olsner has quit ("Leaving"). 00:31:41 eshird 00:31:43 ehird* 00:31:47 dont be such a faggot 00:32:22 psygnisfive: Sorry. I'm such a faggotfag. 00:32:23 ... wait 00:38:04 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 01:10:26 -!- sebbu has quit ("@"). 01:20:09 -!- Core-un has joined. 01:31:12 Core-un: Compiled haskell?... 01:31:53 what? 01:32:14 psygnisfive: Shut up, you. 01:32:48 you'll have to stick your cock in my mouth to make that happen 01:33:10 psygnisfive: uh, thanks, but shut up 01:33:23 yeah thats what i thought :P 01:33:40 :-O 01:34:07 Core-un: are you a reference to ghc/yhc core? :P 01:34:13 Nope 01:34:25 Just people were pronouncing my nick wrong 01:34:27 It's CORE-UN 01:34:30 Not CO-RUN 01:34:32 -!- Core-un has changed nick to Corun. 01:34:38 Corun: oh then your nick sucks 01:34:39 Co-run. 01:34:45 :-( 01:35:05 lol 01:35:45 what's with all the gay sex 01:35:53 lament: you want to know do you? 01:36:02 it's like this channel is turning into #linguistics 01:36:27 HAHAHAH 01:38:54 -!- Polar has joined. 01:40:47 We have a #linguistics? 01:41:27 yes. 01:41:31 it has gay sex 01:41:32 I checked. 01:43:28 Bye for today :-) 01:43:28 -!- AAAAAAue4njxuz has quit (Read error: 104 (Connection reset by peer)). 01:43:33 -!- AAAAAAue4njxuz has joined. 01:43:37 -!- ehird has quit (Remote closed the connection). 01:44:00 -!- AAAAAAue4njxuz has changed nick to Quendus. 01:47:01 -!- boily has joined. 01:54:14 damn 01:54:29 i shouldn't have mentioned #linguistics, now all the gay sex moved there instead 01:54:46 :-P 01:55:01 I didn't know speaking Spanish was a form of gay sex. 01:58:24 -!- Corun has quit ("This computer has gone to sleep"). 02:33:26 -!- Quendus has changed nick to AAAAAAue4njxuz. 02:38:18 -!- ihope has quit ("ChatZilla 0.9.82.1 [Firefox 2.0.0.14/2008040413]"). 02:52:10 -!- boily has quit ("Leaving."). 03:48:55 -!- Polar has quit (leguin.freenode.net irc.freenode.net). 03:48:57 -!- cmeme has quit (leguin.freenode.net irc.freenode.net). 03:57:24 -!- Polar has joined. 03:57:24 -!- cmeme has joined. 04:01:04 -!- Sgeo has quit (Connection timed out). 04:33:36 I am trying to prove that a language is turing equivalent, how would I do this? Is implementing a turing machine an acceptable proof? What other tests are there? 05:30:57 more specifically, implementing a compiler from a turing-complete language to your language. 05:31:14 there's a bunch of nice turing-complete languages for which it is easy to write a compiler 05:31:23 brainfuck is one 05:31:33 LSK combinatory logic is another 05:32:04 register machines are another 05:35:09 (note that the compiler itself can be written in anything) 05:35:45 or writing an interpreter for that language in your language. 05:57:26 implementing a turing machine should be relatively simple to do tho 05:57:30 turing machines are simple 05:57:36 true 05:57:38 impossible to use 05:57:42 but painfully simple 05:57:55 i don't think they're as simple as the three things i mentioned 05:58:09 well, they're on par but somehow clumsier 05:58:16 plus there's no standard notation for them 05:58:17 well, it depends on the language you're implementing it in i suppose 05:58:49 of course 05:58:55 but a tape machine is pretty simple 05:59:15 if your language is objective c, compiling C to it is the simplest way to prove turing-completeness :) 05:59:59 ofcourse, if you're objective-c, then doing so is pointless 05:59:59 since obj-c IS c :) 06:02:12 compilation is a no-op, yes 06:02:22 ey? 06:05:17 deformative 06:05:48 you might want to try implementing a 5 tuple turing machine model 06:05:51 its quite simple 06:08:13 3-state 2-symbol TMs are easy so.. 06:08:21 if you can implement one, you're done. 06:08:39 i'd be willing to look at your language and see if its possible on first glance 06:09:31 er> 06:09:32 ? 06:09:35 deformative? 06:09:36 you there? 06:13:07 -!- GreaseMonkey has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:04:30 -!- olsner has joined. 08:28:30 -!- olsner has quit ("Leaving"). 09:14:48 -!- Iskr has joined. 09:36:37 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 09:36:44 -!- Slereah has joined. 09:39:45 -!- Slereah has quit (Read error: 104 (Connection reset by peer)). 10:03:43 -!- Slereah_ has joined. 10:37:23 -!- GreaseMonkey has quit ("Unisex."). 11:04:53 -!- oklopol has joined. 11:16:44 psygnisfive: It seems it should work, but I am not sure. I know how the universal turing machine works, so I guess I will just attempt to implement one real fast. 11:21:36 -!- oklopol has set topic: (:NAME "#ethoteric" :TYPE (INTERNATIONAL-HUB (PROGRAMMING-LANGUAGETH ETHOTERIC)) :LOGTH "http://tuneth.org/~nef/logth/ethoteric") -- BUT CLICK HERE FOR LINK IF YOUR BROWSER DISLIKES LISP! http://tunes.org/~nef/logs/esoteric. 11:25:28 -!- Sgeo has joined. 11:26:07 -!- fizzie has quit (leguin.freenode.net irc.freenode.net). 11:26:33 Deformative : Use a Post machine 11:27:06 -!- fizzie has joined. 11:30:44 Eh. 11:31:39 yeah you can also compile to Ef 11:31:42 ...wait 11:32:13 Ef? 11:32:25 ef is my fixed-point language 11:32:36 Oh. 11:32:44 Nah, I kindof like UTM. 11:45:26 -!- Sgeo has quit (Remote closed the connection). 12:17:28 -!- Corun has joined. 12:22:47 Slereah_, post machine? 12:26:45 It's a primitive Turing machine. 12:27:36 An infinite tape, two states available for a cell, and the instructions are change to 0, change to 1, left, right and go to state 1 if 0 or state 2 if 1. 12:28:44 Sort of what Boolfuck is to Brainfuck. 12:32:10 Coolfuck 12:32:56 All the other kids are doing it! 12:43:03 i need a secretary 12:43:20 d is too hard to install 12:43:35 where the fuck is the windows installer i can just fucking click 12:45:30 guess i'll continue doing python 12:45:41 until i find a secretary, that is 12:46:58 guess i'll continue doing python <- You furry. 12:49:16 wut? :) 13:13:20 -!- Corun has quit ("This computer has gone to sleep"). 13:25:08 Slereah_, hahah 13:39:40 -!- atsampson has joined. 14:09:24 -!- BMeph has joined. 15:09:38 -!- RedDak has joined. 15:12:14 -!- BMeph69 has joined. 15:15:14 -!- jix has joined. 15:22:13 -!- BMeph has quit (Nick collision from services.). 15:22:56 -!- BMeph69 has changed nick to BMeph. 15:48:38 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 15:49:11 -!- Judofyr has joined. 15:51:36 -!- timotiis has joined. 16:00:41 -!- BMeph has quit (Remote closed the connection). 16:11:15 -!- sekhmet has quit (Remote closed the connection). 16:11:18 -!- sekhmet has joined. 16:11:30 -!- BMeph has joined. 16:43:11 -!- AAAAAAue4njxuz has quit (Read error: 104 (Connection reset by peer)). 16:43:19 -!- AAAAAAue4njxuz has joined. 16:48:49 -!- ehird has joined. 16:49:03 oklopol's topic owns 16:51:45 ehird: well i put it up out of necessity :) 16:52:06 oklopol: did freenode complain 16:52:06 :P 16:52:14 nono, i did! 16:52:57 good news, btw, i'm thinking about installing linux on this machine 16:53:06 i assume that's good news :D 16:53:40 oklopol: YES, it is 16:54:07 oklopol: but plz just get the latest ubuntu because otherwise you'll yell at me about some software not being easily installable or something :p 16:54:16 :D 16:54:21 heh, sure 16:54:36 last time i didn't install it myself, was already there, installed ages ago 16:54:41 oklopol: http://www.ubuntu.com/getubuntu/download :P 16:55:16 step 1. choose location, step 2. click download, step 3. burn to cd, step 4. boot up cd and choose 'Install' step 5. do what it says step 6. step 6 was eaten by a bird 16:55:23 zonk 16:55:29 (THE ZONK IS REQUIRED) 16:55:37 another new thing on my todo list, i wanna fail @ making my own OS, haven't done that yet 16:55:57 (i will be dissappointed if i don't fail, ofc) 16:55:57 oklopol: oh its quite fun 16:56:03 but the base os is uh always the same 16:56:12 because there are about 2 tutorials in existance 16:56:15 and both of their code is quite similar 16:56:26 and you couldn't really deviate without knowing a lot about os dev :p 16:56:33 so, yeah, its pretty boring because it's mostly copypasta. 16:56:36 and then you get stuck. 16:56:39 :) 16:56:43 omgz 16:56:46 no -Serv 16:56:55 yeah, let's wreak havoc 16:56:59 lets 16:57:02 I'm gonna be ais523 16:57:03 k? 16:57:06 OKAY! 16:57:07 or ... lilo 16:57:11 i'm gonna be ehird! 16:58:09 -!- ais523 has joined. 16:58:14 ais523: oh shit 16:58:17 speak of the devil 16:58:20 I was about to /nick ais523 while nickserv was down :| 16:58:25 I guess you saw that, in the losg. 16:58:29 And came to DEFEND YOUR IMAGE. 16:58:35 ehird: You forgot the two most important steps on your ubuntu setup! 16:58:45 ais is never here, he just refreshes logs every 10 secs and reads 16:58:46 no, only just connected to the Internet 16:58:48 BMeph: Sorry, they haven't worked out a business model yet. 16:58:49 :( 16:59:11 They don't want to '...' until they have figured out 'Profit' 16:59:26 I thought it was ??? not ... 16:59:34 ehird: Well, then, here's your chance to help them. ;) 16:59:45 ais523: oh, yeah 16:59:59 BMeph: Sell their souls to binary driver manufacturers! Oh wait. 17:00:16 ah, Ubuntu finally decided to package Firefox 3rc1 17:00:35 although I'll keep using Epiphany until 3rc2 is out, probably, because of the fsync bug 17:00:44 ais523: i shall wait patiently for debian. 17:00:48 fuckin' dinosaurs.. 17:01:24 ...is the newest Olympic summer sport! :) 17:01:42 Or is that summer Olympic sport? ;) 17:01:43 i think it's safer to fuck them when they're frozen 17:01:56 so winter 17:02:08 sheesh 17:02:10 oklopol: Ah, but that wouldn't be "sporting," now, would it? 17:03:57 i guess it wouldn't 17:04:11 i'm not that sporty myself 17:04:13 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 17:05:27 -!- Slereah_ has joined. 17:05:57 so, how zonk is the zonk zonk zonk zonk? 17:07:58 ehird: 4, obviously 17:08:05 ais523: OK 17:17:35 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )"). 17:19:57 -!- RedDak has quit (Remote closed the connection). 17:21:52 -!- cherez1 has joined. 17:35:59 -!- Corun has joined. 17:38:19 -!- cherez has quit (Read error: 110 (Connection timed out)). 17:44:32 -!- Slereah has joined. 17:44:33 -!- Slereah_ has quit (Read error: 104 (Connection reset by peer)). 17:50:54 -!- uvanta has joined. 17:51:08 * NickServ :Erroneous Nickname 17:51:51 -!- Corun has quit ("This computer has gone to sleep"). 18:02:49 -!- ehird has quit (Remote closed the connection). 18:03:28 -!- ehird has joined. 18:04:45 O_O 18:05:00 O_O 18:09:20 -!- olsner has joined. 18:11:31 -!- kar8nga has joined. 18:15:15 -!- sebbu has joined. 18:26:12 -!- sebbu2 has joined. 18:29:33 -!- oklopol has joined. 18:37:19 -!- sebbu has quit (Read error: 113 (No route to host)). 18:37:20 -!- sebbu2 has changed nick to sebbu. 19:10:11 -!- oerjan has joined. 19:13:38 -!- jix has quit (Nick collision from services.). 19:13:48 -!- jix has joined. 19:27:00 -!- oklofok has joined. 19:29:24 -!- oklopol has quit (Read error: 113 (No route to host)). 19:40:50 -!- AnMaster has changed nick to AnMaster_. 19:40:57 -!- AnMaster_ has changed nick to AnMaster. 19:46:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 19:46:51 -!- Judofyr has joined. 19:47:41 ZOOOP 19:47:45 oklofok: infanfoh now 19:47:58 ehird: context? 19:48:17 ais523: infanfoh is oklofok's inf-d 5-in-a-row 19:48:30 how large is the board? 19:48:41 infinite in each dimension as well as infinite-dimensions? 19:49:31 ais523: yep 19:49:47 and are there any rules to negate the first player's advantage? 19:51:56 ais523: nope 19:52:34 while I used to enjoy 4x4x4x4 noughts-and-crosses, infinite-dimensional five-in-a-row seems hard to keep track of 19:52:46 you couldn't even draw the entire board at once, you'd have to keep track of it some other way 19:53:07 ais523: his is cli based 19:53:12 runs as an irc bot 19:53:16 & has no display per se 19:53:18 you have to visualize it 19:53:23 yes, exactly 19:53:26 but it has a mini language for specifying positions, ais523 19:53:27 that's why I prefer 4x4x4x4 19:53:31 [a b c] for each a in b, c 19:53:32 so 19:53:35 and 19:53:38 a to b 19:53:41 a to b, step c 19:53:44 and {...} a regular list 19:53:44 so 19:53:50 [a <1 10> {50 a}] 19:53:58 {50 1 50 2 50 ... 50 10 50 1 50 2 ... } 19:54:02 (it's cyclic) 20:04:42 -!- st01k has joined. 20:07:58 wow, there are a lot of people in here 20:08:23 quite 20:08:35 * ais523 wonders about the first in alphabetical order 20:09:56 ais523: hes a regular ithink 20:10:02 * [AAAAAAue4njxuz] (n=Quendion@145.175.adsl.brightview.com): Aleksander Nonymous 20:10:04 quendion is familiar 20:10:09 ah, yes 20:10:14 interesting nick, though 20:10:16 ais523: I am investigating games programming in Haskell. Not much luck so far ... 20:10:35 well, it would need bindings to some graphics lib, probably 20:10:40 ehird, I think python's pygame may be better 20:10:43 or even C or C++ 20:10:48 depending on your needs 20:10:55 if you are non-esoteric that is 20:10:56 :P 20:10:57 AnMaster: Wow what a revolutionary idea 20:11:03 ah, AnMaster, I haven't seen you for ages 20:11:12 ais523: I was beginning to get optimistic :( 20:11:15 mostly because I haven't been online 20:11:15 ais523, I have been idling here 20:11:22 ais523: there's already opengl and sdl bindings, anyway 20:11:27 probably i'll go with sdl because it's simpler 20:11:32 ais523, how goes the interfunge ;) 20:11:35 opengl isn't that complicated 20:11:35 but I want a purely-functional approach to sepreate rendering and event handling 20:11:37 AnMaster: I've had exams 20:11:39 which I think I can do 20:11:39 but eh 20:11:41 ais523, same 20:11:50 ah, that explains it then 20:12:47 still have, just one more week 20:12:51 same here 20:12:54 but only one exam in that week 20:17:11 hmm... I just wrote "business" to mean "extent to which I'm busy" 20:17:40 ais523: busyness is incorrect but useful in that case 20:18:00 well, I like using correct English even if it produces silly results 20:18:06 not sure if it was correct here, though 20:18:52 ehird: typing with one's elbows is fun! 20:19:07 AAAAAAue4njxuz: ha 20:19:20 surely it depends on what sort of keyboard you're using? 20:19:29 * ais523 imagines trying to type with one's elbows on an iPhone 20:20:00 although they're allegedly hard to type on even normally due to the lack of feedback 20:20:05 :D 20:20:39 ais523: a bit 20:20:41 you get used to it 20:20:50 because of its auto-correction you can mostly just hit the right area 20:20:53 it has some nifty tricks 20:25:36 ais523: humph, I'm going to work on another pseudo-esoteric language. 20:25:43 a stack-based, strongly typed a-la haskell and ML language 20:25:47 maybe with dependent types. 20:26:20 AAAAAAue4njxuz, you'd need HUGE keys 20:26:25 I've been thinking about writing a Feather bootstrap for a while now 20:26:28 or small elbows 20:26:46 cvkftgioufda\zc78dffgftgf8df980c 20:26:51 ^ elbowtyping 20:26:54 because I'm getting fed up of waiting for a feather interp to spontaneously come into existence 20:26:57 tiosxd ix a trdy 20:27:00 gcxoolio ediotglkc 20:27:03 ^ hello world 20:27:04 should say: 20:27:06 this is a try 20:27:12 didn't really 20:27:34 ais523, feather? 20:27:34 AnMaster: only if you want to type accurately, which kind of defeats the point of elbow-typing :p 20:27:50 AAAAAAue4njxuz, so that is your nick? 20:28:00 AnMaster: feather is his infinitely-bootstrapped time-loop language 20:28:04 all modifications to the language are always there 20:28:08 and the base language creates itself 20:28:10 Quendus is my nick ;> 20:28:16 ehird, haha 20:28:20 AnMaster: no really 20:28:20 ais523, details! 20:28:28 gh nhixs i9sde hasrdr 20:28:30 AnMaster: it even has a paradox resolution mechanism 20:28:36 wowe 20:28:36 for when you create a pime taradox 20:28:37 wow* 20:28:41 ais523, SPECS!!!!!!!!!!! 20:28:47 AnMaster: a smalltalk-like language that uses retroactive changes to simulate inheritance because it doesn't have classes 20:28:52 AnMaster: it's also a prototype-based smalltalk-esque OOP language 20:28:55 with no inheritance 20:28:55 I haven't written specs like, but I should do at some point 20:29:01 ehird: well, sort of 20:29:03 ais523, code example then 20:29:07 objects are created by cloning other objects 20:29:12 so you go back in time and alter what they cloned 20:29:21 let me think 20:29:50 the issue with a code example is that the syntax can be modified at will by the programmer, and probably will be 20:29:57 but the initial syntax is designed to be very simple 20:30:00 like this: 20:30:15 so this is a grand feather paradox? 20:30:19 id : 'a 'a -> 20:30:27 oerjan: it's not a paradox 20:30:35 whoos 20:30:36 there's nothing paradoxical about its timetravel model 20:30:37 h 20:30:44 + : 'a 'a -> 'a Num => 20:31:06 {^outputstream write "Hello, world!"} 20:31:12 fix : 'a 'a -> 'a -> 20:31:20 ais523: suggestion 20:31:23 is an example of what a program could look like after you'd implemented a bit of syntactic sugar 20:31:24 outputStream, not outputstream 20:31:35 ehird: well, it's not part of the language 20:31:44 ais523: I'm just saying, you should encourage it 20:31:48 OK 20:31:55 ais523: presumably, the base language will come with a Prelude which defines that syntactical sugar 20:32:01 yes, that's the idea 20:32:02 so that there's _some_ convenient common base 20:32:05 also things like numbers and strings 20:32:09 ais523: right, so use thatKindOfNaming for it 20:32:13 okIWill 20:32:13 it fits with smalltalky languages 20:32:19 letsTalkLikeThis 20:32:54 [ ^ | ^ outputStream write [^ helloWorldString ] ] 20:32:58 hurrahForJava 20:33:08 blergh 20:33:09 AAAAAAue4njxuz: pleaseBurnInHell 20:33:11 isHowItWouldLookBeforeYou'dSugarisedTheParser 20:33:22 ais523: interestingButIThinkThatYouNeedaColon 20:33:24 ehird: pleaseRecogniseSarcasm 20:33:24 becauseToStartWithAllTokensAreSeparatedWithSpaces 20:33:28 outputStream write: "Hello, world!" 20:33:29 ehird: whereWouldThatBe? 20:33:31 because otherwise it gets awkward 20:33:34 ehird: you'reWrong 20:33:38 functionsAreCurried 20:33:46 ais523: oh, um, so it's not smalltalk-like then 20:33:55 if you have a thing called a 'function' and you just nab it off an object ... NOT smalltalk-like 20:33:56 youMightNotThinkSo 20:33:58 smalltalk-like = message passing 20:34:04 itIsMessagePassing 20:34:16 whyCan'tObjectOrientationBeCurried 20:34:34 curried? 20:34:36 youPassAMessageAndIfItDoesn'tHaveEnoughArgumentsItGivesYouAFunctionSoYouCanSupplyTheRest 20:34:40 LikeHaskellDoes 20:34:53 wow 20:34:59 so many upper case chars 20:35:00 on irc 20:35:02 just wow 20:35:10 it's unnatural! 20:35:17 yes agreed 20:35:19 in Smalltalk, you can write 2 + 2 20:35:24 where would we be if this contined!? 20:35:30 that sends a + message to 2, with the argument 2 20:35:33 but it's really 2 +: 2 20:35:38 sugarised slightly 20:35:59 in Feather, assuming you're using a boxed number 2 (you would be normally but you need to deal with unboxed objects during bootstrapping) 20:36:02 you can write 2 + 2 20:36:27 and that sends a + message to the number 2 and gets back a function that adds 2 to a number 20:36:28 ais523: an idea 20:36:29 FeatherOS 20:36:30 ais523, go implement it, in INTERCAL 20:36:32 not everything is an object, unlike in Feather 20:36:34 its inevitable really, ais523 20:36:42 you do low-level stuff in the bootstrap 20:36:43 actually, I was going to bootstrap it in Scheme 20:36:46 and then applications 'clone' the language 20:36:49 AnMaster: THE ANSWER SHOULD BE OBVIOUS 20:36:52 and bootstrap away the unsafe operations 20:36:56 :D 20:36:57 oerjan, eh? 20:37:04 ais523: also: in place kernel updates! 20:37:10 ais523, ok 20:37:13 ehird: oh, there was something I was going to ask you 20:37:18 * oerjan is a bit delayed 20:37:22 you know Haskell has unsafePerformIO 20:37:34 oerjan, oh right I see 20:37:36 the "unsafe" indicating that you're perverting the structure of the language and so should never use it? 20:38:12 what should I use as a prefix for an operation which is so ridiculously unsafe that the only use that should ever be used for it is writing safety checks on it to produce a new function that is less unsafe? 20:38:14 ais523, how do you perform IO safely then? 20:38:26 AnMaster: strict evaluation 20:38:40 the boring way 20:38:43 at least, that's for output 20:38:47 ais523: ummmmmmm 20:38:49 input is considerably more interesting 20:38:52 you have to set up callbacks 20:38:53 holyFuckingShit 20:39:03 or 20:39:19 yourMotherWasAWhoreAreYouSufficientlyOffendedGoodNowYoullNeverTouchThisFunctionBecauseItInsultedYourMotherGoodnight 20:40:31 incidentally, the function itself is sort of like become: in Smalltalk, but retroactive to the start of the program and also, whenever you use it you have to ensure that the retroactively modified program doesn't use it for the same purpose again 20:40:48 ais523, veryUnsafe 20:40:48 i.e. the only possible use for the function is to modify the program in such a way that you didn't use it 20:40:49 maybe? 20:40:52 or 20:40:53 ais523: anyway 20:40:57 internalOnly 20:40:57 i'd just do unsafe 20:40:59 veryUnsafeBecome seems to fit well 20:41:01 ask #haskell 20:41:05 oh wit 20:41:07 *wait 20:41:08 its not for haskell 20:41:15 ais523: well, i'd call it primitiveX 20:41:19 since presumably it's an internal function 20:41:22 and NOT to be called by user code 20:41:29 yes, not to be called by user code 20:41:31 just by the prelude 20:41:32 ais523: primitiveBecome 20:41:37 ais523: Haskell uses # for internal things 20:41:39 ais523, if it would just be used for internal, I'd say either, as ehird suggested primitive, but better: internalBecome 20:41:43 e.g. unsafeCoerce# is the internal coercing magic 20:41:44 rather than primitiveBecome 20:41:47 it may be /mentioned/ by user code if you need to invent a different sort of safety check for it 20:41:54 ais523: and I# is the primitive int wrapper 20:42:01 because there's more than one way to safise it 20:44:54 for instance, if you're adding a method or property to an object, you can simply check if it exists and not add it if it does 20:45:10 that way, your retroactive modification prevents the same modification being made in the changed program 20:45:44 ais523: want to see a dependently-typed stack based program? 20:45:48 it uses a type function 20:45:56 sounds vaguely interesting 20:46:03 ais523: http://pastebin.ca/raw/1033388 20:46:19 an example of the type-function formatT: 20:46:24 "" formatT -> String 20:46:26 wow, that's hard to read 20:46:35 "%d" formatT -> (Int -> String) 20:46:39 "%s" formatT -> (String -> String) 20:46:49 "%s%d abc %s" formatT -> (String -> Int -> String -> String) 20:47:02 ais523: its based on the printf from http://www.cs.chalmers.se/~augustss/cayenne/examples.html 20:48:30 ais523: admittedly string processing is not something that a stack language excels in 20:48:57 is it possible to define printf's type in any strongly typed language? 20:49:03 ais523: um yes 20:49:05 I just did it. 20:49:07 the type of some of the arguments depends on the value of one of them 20:49:13 ais523: tada, that's what dependent types are 20:49:17 dependent types: types that depend on values 20:49:32 ais523: now you might ask -- what about 'format s 3'? 20:49:39 How do we know that that is well typed until runtime? 20:49:45 ais523: it's simple -- the type system makes you PROVE it!! 20:49:55 Just like in haskell which makes you prove things are well-typed 20:50:01 ais523: For instance, take this function: 20:50:07 myFoo xs = head xs 20:50:08 what if you're reading the format string from a file? 20:50:13 ais523: I just told you 20:50:15 you have to prove it 20:50:19 now let me explain ;) 20:50:21 myFoo xs = head xs 20:50:23 what if xs = []? 20:50:29 obviously, head [] is not well-typed 20:50:32 it makes no sense 20:50:36 head operates on _non-empty lists_ 20:50:41 ergo, the above is a type error 20:50:41 But: 20:50:49 myFoo xs = if xs == [] then 3 else head xs 20:50:51 that is fine 20:51:58 ais523: now when you get into dependent types 20:52:02 it naturally leads to: Types == values. 20:52:07 Types are just values, values are just types. 20:52:12 The type language is the programming language. 20:52:27 ais523: http://www.cs.chalmers.se/~augustss/cayenne/examples.html Take a look at the 'printf' example. It defines a function in the type system, PrintfType 20:52:34 and a function printf, in the value system 20:52:40 which utilizes PrintfType to get its type 20:52:49 and thus, printf "%d" "abc" gives you a type error. 20:52:53 It's a beautiful paradigm and so natural 20:53:36 ais523: There are a few problems .. compilation might not halt. 20:53:43 But if you do silly things in the type system that's your fault isn't it ;) 20:55:39 and then ais523 **DIED** 20:55:46 not dead, doing something else 20:55:56 but I did read what you wrote 20:55:58 ais523: Feather, I hope. 20:56:02 no, Agora 20:56:13 ais523: Agoreather 20:56:18 and it strikes me that your approach would probably work better in an interpreted language 20:56:26 ais523: Um no. 20:56:40 The point is that you can have the static assurance of strong types; if it compilse it runs 20:56:43 But it takes it one further 20:56:47 ehird: well, I have considered a feathernomic; its defining feature would probably be that all rulechanges were retroactive to the start of the nomic 20:56:53 in that you can express _any_ constraint in the type system 20:57:05 and the type system helps you by forcing you to prove things that you define 20:57:11 which is analogous to .. functions! 20:57:12 what if the typechecks are themselves badly typed? 20:57:23 ais523: there's an infinite stack of types obviously 20:57:34 ais523: think about it 20:57:37 its just like expressions vs statements 20:57:39 values vs types 20:57:42 you take regular, fine values 20:57:43 yes 20:57:47 and then you add this weird extra language 20:57:53 why not just add the same language on another layer? 20:57:54 but do you need a precompilation during which you determine the compilation is well-typed? 20:57:58 which then has itself as a type layer 20:58:02 ais523: well, basically, yes 20:58:05 it's like lisp macro expansion 20:58:12 you compile down until you get the values compiled 20:58:14 and a preprecompilation during which you determine if that is well-typed? 20:58:33 that's why I suggested doing it in an interpreted language: to avoid the infinite regress 20:59:00 ais523: I think you are misguided. Implementations exist and the languages are developed actually. 20:59:03 err, actively 20:59:16 Agda: http://appserv.cs.chalmers.se/users/ulfn/wiki/agda.php?n=Main.HomePage 20:59:20 ais523: Coq is also dependently typed 20:59:29 well, I'm not sure how it would work, but presumably there's some method of avoiding the regress 20:59:40 my guess is the higher levels are interpreted, and then it's compiled from there down 21:00:23 ais523: rubbish 21:00:25 of course not 21:00:47 -!- Judofyr has quit. 21:13:06 -!- oerjan has quit ("Good night"). 21:14:46 hmm... whenever I visit a Slashdot article and see that there are no comments, I'm disappointed that there are no comments to read and wait a while, refreshing 21:14:49 is this the wrong reaction? 21:15:32 -!- jix has quit ("CommandQ"). 21:17:46 -!- Iskr has quit ("Leaving"). 21:19:28 -!- jix has joined. 21:19:31 ais523: yes, but I do it too 21:19:57 besides, my karma's only marginally above excellent 21:20:05 ais523, yes, you want to make a first comment! 21:20:07 so it's not worth doing "FRIST PSOT!!!1" or whatever 21:20:16 ais523: my karma on slashdot, iirc, is in the negatives 21:20:23 ehird: how did you manage that? 21:20:47 ais523, make a *good* first comment 21:20:55 ais523: said some crap 21:20:57 it was years ago. 21:20:58 AnMaster: impossible, you have to spend thinking time to do that 21:21:03 I don't like slashdot :-) 21:21:08 I've made good early comments, though, that have been moderated up to 5 21:21:08 ehird, nor do I 21:21:16 and the article was blank when I started making them 21:21:25 ais523, it was blank? 21:21:26 ?! 21:21:29 but because I put thought into them there were something like 7 or 8 comments before mine 21:21:55 oh you mean blank with comments 21:22:18 I mean no comments, yes 21:22:29 although if you're fast enough, and I have been sometimes, the read more... link is a 404 21:22:44 because the articles don't always come up at the same time on the main page and elsewhere 21:23:05 -!- RedDak has joined. 21:28:54 -!- uvanta has changed nick to HanDongSeong. 21:48:17 -!- cherez1 has changed nick to cherez. 21:50:35 hehe 22:09:07 -!- olsner has quit ("Leaving"). 22:15:51 -!- kar8nga has left (?). 22:16:29 -!- BMeph has quit ("Time for me to go home"). 22:16:59 -!- BMeph has joined. 22:25:20 -!- jix has quit ("CommandQ"). 22:26:53 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 22:34:36 -!- Corun has joined. 22:50:13 -!- RedDak has quit (Remote closed the connection). 23:12:18 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 23:40:19 what does ais's quit message do? 23:40:36 mostly directed @ ais523 23:40:54 oklofok: beats me 23:40:58 try it 23:41:20 put: (1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1" 23:41:21 in a file 23:41:23 and run ick on it 23:41:30 sounds icky 23:43:18 -!- HanDongSeong has quit ("If you're seeing this message, it's probably XChat's fault.").