00:00:00 --- log: started retro/13.01.30 03:54:26 --- quit: karswell (Ping timeout: 245 seconds) 07:29:31 --- join: impomatic (~digital_w@148.54.112.87.dyn.plus.net) joined #retro 09:30:52 --- join: ncv (~quassel@unaffiliated/neceve) joined #retro 11:49:04 hm. 11:50:16 so... i can see how to implement a "halt" function that drops everything retro is doing and basically reboots 11:50:32 but i suspect it's already in here somewhere 11:50:46 maybe something to throw an exception or error? 11:50:58 anyone know what it might be called? 11:58:50 hmm... 0; actually fits the bill pretty nicely... 12:44:40 --- join: Mat2 (~claude@91-65-144-133-dynip.superkabel.de) joined #retro 12:44:51 hello ! 12:45:12 hey Mat2 :) 12:45:21 hi tangentstorm 12:45:31 what's new ? 12:46:54 i'm trying to make a minesweeper game in retro 12:47:08 it's hard! 12:47:22 not the minesweeper part... the translating it to retro part :) 12:47:29 hard for me i mean :) 12:47:33 what about you? 12:48:00 I'm coding the hashed dictionary routines for metro at current 12:48:28 as always performance matters in this scope 12:49:16 but it progresses 12:50:23 (the bad news is, that because of the way retro handles strings I can not port it) 12:52:36 what's the problem? 12:53:35 for efficient hashing, the retro strings need to be packed and this compensates the performance advantage 12:54:50 apart from this problem, the retro language relate on features of it's linked list approach 12:57:03 oh right. you'd need to use the bytestrings module to do it in retro 12:58:09 metro is using hashed arrays for dictionarys 12:58:20 ^dictionaries 12:58:21 library/bstrings.rx 12:58:42 cool :) 12:59:05 crc and i were talking about doing something like that when discussing case-insensitivity a while back 12:59:25 since making it case insensitive would hurt the current compare 12:59:39 the changes would be worth the effort for sure 13:00:37 the language has types and this will include hash tables 13:00:56 handy 13:01:50 to really use b-strings quickly, you probably want to be able to read and write individual bytes to ram 13:03:26 hmm 13:03:37 that's not the problem because 3 instructions are bundled so and masking inclusive store or load operations are free 13:04:07 (this simplifies the compiler by the way) 13:04:31 but when you're talking about the dictionary, speed isn't a huge issue, because a few extra calculations are still much faster than the speed at which even a fast typist can type 13:04:58 i mean in retro/ngaro 13:05:13 speed matters for immediate functions for examples 13:06:30 why? usually they only walk the list once, at compile time, and then they just write the address, right? 13:07:34 no, there are cases, where code-generating functions need to dynamical parse word addresses 13:08:39 think of structure defining words for example. These should be extensible 13:09:13 or prototype like object-orientated objects 13:12:10 hmm. i guess so 13:19:50 i want to make an enum| a b c d | like variables| a b c d | but that assigns the numbers 0, 1 , 2, 3 etc as it goes. 13:22:26 but i don't need to because it's already there! 13:27:14 how have you implemented the enum| word ? 13:50:01 needs enum' : enum| 0 enum'enum| ; 13:50:08 :) 13:50:13 *g* 13:50:45 ok, in metro you can define that word simply with: 13:51:08 http://code.google.com/p/retro-language/source/browse/library/enum.rx 13:51:22 0 u1 [1+] iota :enum 13:52:10 result is an array with values 0,1..n 13:52:14 u1 defines a variable? 13:52:34 hmm 13:52:57 no, i don't want an array. i want to define a bunch of constants 13:53:02 u1 picks the second stack element (replacement for stack) 13:53:25 these are constants because metro is functional language and do not have variables 13:53:46 you can access all elements though dictionary entries at default 13:54:07 20 enum :test 13:54:40 after enum| a b c d | ... d c b a .s should print: <0> 0 1 2 3 4 13:54:59 {a1 a2 a3 ...} test label 13:55:39 ok: 13:56:06 4 enum :test {a b c d} 'test label 13:56:27 d c b a will print 0 1 2 3 4 13:57:02 i can't visualize how that works yet 13:57:15 what does : do ? 13:57:27 is it a prefix? 13:57:39 create an dictionary entry (word defination) 13:58:07 { } defines symbolic values and 13:59:20 'test label extend the content of test with label properties for each numerical value 13:59:32 (this feature I have borrowed from lisp) 14:01:14 probably I will create an simplified set of word definations for symbolic definations 14:03:59 a b c d are properties of test? like indexes? 14:04:40 sort of, yes 14:05:29 it's like test.a test.b and so on? 14:06:01 yes 14:06:03 or like a = lambda : test[0] 14:06:33 i can underst and the lambda version 14:06:51 i don't understand how they can be test.a and test.b 14:06:59 because 14:07:58 4 enum :test 4 enum :other {a b c d} 'test label {a b c d} 'other label 14:08:08 for every constant defination, each cell can hold a value and property label which compiles to code to push that value onto the stack if parsed 14:08:23 better: 14:08:30 4 enum :test 4 enum :other {a b c d} 'test label {d c b a} 'other label 14:09:08 oh, I se your confucsion 14:09:10 are a b c d properties of test, or of other? or do they each have their own? 14:10:19 the parser binds each property to the last referenced constant defination so a b c d 14:11:06 can be properties for both test and other without problems 14:12:33 interesting. so how would i get the "test" ones back? 14:12:45 'test 14:13:28 a b c d <- test.a test.b test.c test.d 14:13:33 'other 14:13:54 a b c d <- other.a other.b other.c other.d 14:14:07 a b c d <- other.a .... 14:14:08 so ' doesn't put anything on the stack.. 14:14:21 exact 14:14:57 so 14:15:17 hrm 14:15:28 interesting. 14:22:05 ' define a label value 14:22:20 you can also define: 14:23:08 4 enum 'a 'b 'c 'd :test 14:24:08 the parser test the type of each token at run-time, so: 14:24:09 --- quit: ncv (Read error: Connection reset by peer) 14:24:19 3.14 :pi 14:24:26 <- create a constant 14:24:47 3 0.14 + :pi 14:25:09 <- create a word which returns 3.14 onto the stack 14:25:41 both, constant and code definations are defined though the same prefix 14:26:23 that is possible because the parser know the state and type of each token 14:26:51 and can compile code dependent of it 14:27:33 this way, type conversions are handled automatical too, so in most cases ther is no need for explicit type declarations 14:29:25 $2F 0.42 + <- unsigned integer + float = float 14:34:25 sounds pretty cool. i will definitely try it out :) 14:34:54 but for now i need to sleep. see you! 14:35:04 --- nick: tangentcode -> tangentsleep 14:37:27 ciao 14:37:45 --- quit: Mat2 (Quit: Verlassend) 14:42:19 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 15:36:42 --- join: kumool (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 15:39:30 --- quit: kumul (Ping timeout: 248 seconds) 15:40:22 --- quit: impomatic (Quit: impomatic) 15:46:53 --- join: impomatic (~digital_w@148.54.112.87.dyn.plus.net) joined #retro 16:16:04 --- quit: impomatic (Quit: http://corewar.co.uk) 16:51:47 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 16:54:57 --- quit: kumool (Ping timeout: 264 seconds) 16:58:28 --- join: kumool (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 17:01:06 --- quit: kumul (Ping timeout: 248 seconds) 17:01:35 --- join: arescorpio (~arescorpi@190.55.93.118) joined #retro 17:31:34 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 17:34:10 --- quit: kumool (Ping timeout: 248 seconds) 18:13:18 --- join: kumool (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 18:15:46 --- quit: kumul (Ping timeout: 248 seconds) 18:25:38 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 18:28:02 --- quit: kumool (Ping timeout: 248 seconds) 18:50:34 --- join: kumool (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 18:53:06 --- quit: kumul (Ping timeout: 248 seconds) 19:19:27 --- quit: kumool (Quit: Leaving) 19:23:29 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 19:40:05 --- join: kumool (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #retro 19:42:37 --- quit: kumul (Ping timeout: 244 seconds) 19:43:38 --- quit: arescorpio (Quit: Leaving.) 21:42:50 --- quit: kumool (Quit: Leaving) 21:43:43 --- nick: tangentsleep -> tangentcode 23:59:59 --- log: ended retro/13.01.30