| 00:00:14 | * | MFlamer quit (Ping timeout: 240 seconds) |
| 00:00:17 | BitPuffin | fowl: you didn't |
| 00:00:41 | fowl | why are you checking if something == nil btw, use isNil() |
| 00:00:59 | BitPuffin | fowl: oh really? |
| 00:01:13 | fowl | yea |
| 00:03:34 | BitPuffin | fowl: why isn't isNil mentioned in the manual :( |
| 00:06:56 | fowl | i dunno |
| 00:06:59 | gdos | yea why not? |
| 00:07:13 | fowl | its probably mentioned in the tutorial, maybe |
| 00:07:29 | BitPuffin | possibly |
| 00:08:04 | BitPuffin | I thought I had read something like that |
| 00:08:08 | BitPuffin | I even searched the manual for it |
| 00:09:57 | BitPuffin | not mentioned in tutorial either |
| 00:10:43 | BitPuffin | hmm |
| 00:10:46 | BitPuffin | well now I am stuck |
| 00:11:02 | * | gurug33k quit (Remote host closed the connection) |
| 00:11:37 | fowl | stuck where |
| 00:11:49 | BitPuffin | with the dom stuff |
| 00:12:04 | BitPuffin | I am trying to write this js line in nimrod |
| 00:12:09 | BitPuffin | signinLink.onclick = function() { navigator.id.request(); }; |
| 00:12:34 | fowl | reactormonk has experience with JS |
| 00:12:53 | BitPuffin | but the function getElementById apparently returns a TNode |
| 00:12:58 | BitPuffin | which apparently doesn't have onclick |
| 00:13:13 | BitPuffin | even though an anchor element does have an onclick |
| 00:13:15 | BitPuffin | so uh |
| 00:13:21 | BitPuffin | reactormonk: save me barry |
| 00:14:37 | BitPuffin | http://youtu.be/03535JulkYA |
| 00:18:56 | * | fowl quit (Quit: Leaving) |
| 00:21:58 | * | Demos_ joined #nimrod |
| 00:38:54 | * | Demos_ quit (Ping timeout: 268 seconds) |
| 00:40:58 | BitPuffin | meh will deal with that tomorrow |
| 00:41:02 | BitPuffin | night y'all! |
| 00:45:50 | * | BitPuffin quit (Ping timeout: 264 seconds) |
| 01:01:07 | * | gdos quit (Ping timeout: 246 seconds) |
| 01:23:47 | * | Demos_ joined #nimrod |
| 01:50:48 | * | Demos_ quit (Ping timeout: 240 seconds) |
| 01:51:10 | * | Demos_ joined #nimrod |
| 01:52:17 | * | DAddYE quit (Ping timeout: 268 seconds) |
| 01:58:35 | * | gdos joined #nimrod |
| 02:00:48 | * | Demos_ quit (Quit: Konversation terminated!) |
| 02:03:39 | * | Demos joined #nimrod |
| 02:17:06 | * | cablehead quit (Remote host closed the connection) |
| 02:17:42 | * | cablehead joined #nimrod |
| 02:20:57 | * | Demos quit (Quit: Konversation terminated!) |
| 02:21:05 | * | Demos joined #nimrod |
| 02:21:58 | * | cablehead quit (Ping timeout: 246 seconds) |
| 02:23:07 | * | MFlamer joined #nimrod |
| 02:48:36 | * | DAddYE joined #nimrod |
| 02:54:57 | * | DAddYE quit (Ping timeout: 240 seconds) |
| 02:56:16 | * | Endy joined #nimrod |
| 03:02:08 | * | gdos quit (Quit: *GONE*) |
| 03:41:10 | * | OrionPK quit (Quit: Leaving) |
| 03:51:38 | * | DAddYE joined #nimrod |
| 03:52:44 | * | dyu_ joined #nimrod |
| 03:58:13 | * | DAddYE quit (Ping timeout: 246 seconds) |
| 04:03:13 | * | Associat0r quit (Quit: Associat0r) |
| 04:06:16 | * | Endy quit (Ping timeout: 245 seconds) |
| 04:19:23 | * | cablehead joined #nimrod |
| 04:27:13 | * | DAddYE joined #nimrod |
| 04:29:01 | Demos | can I get a non-GC'd sequence? I often find I can garentee unique ownership on many heap allocated objects |
| 04:33:41 | * | DAddYE quit (Remote host closed the connection) |
| 04:35:45 | * | cablehead quit (Remote host closed the connection) |
| 04:36:11 | * | cablehead joined #nimrod |
| 04:40:26 | * | cablehead quit (Ping timeout: 245 seconds) |
| 05:23:03 | * | shodan45 quit (Ping timeout: 245 seconds) |
| 05:27:19 | * | isenmann1 joined #nimrod |
| 05:34:50 | * | DAddYE joined #nimrod |
| 05:41:01 | * | DAddYE quit (Ping timeout: 245 seconds) |
| 06:01:57 | * | MFlamer quit (Ping timeout: 250 seconds) |
| 06:04:54 | * | Demos quit (Quit: Konversation terminated!) |
| 06:37:42 | * | DAddYE joined #nimrod |
| 06:44:12 | * | DAddYE quit (Ping timeout: 256 seconds) |
| 06:55:26 | * | shodan45 joined #nimrod |
| 06:56:40 | * | shodan45 quit (Client Quit) |
| 07:10:05 | * | Araq_ joined #nimrod |
| 07:20:25 | Araq_ | hi isenmann1 welcome |
| 07:40:53 | * | DAddYE joined #nimrod |
| 07:47:26 | * | DAddYE quit (Ping timeout: 240 seconds) |
| 07:50:01 | * | gurug33k joined #nimrod |
| 07:53:55 | * | q66 joined #nimrod |
| 08:14:35 | * | Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]) |
| 10:09:54 | * | dyu_ quit (Ping timeout: 256 seconds) |
| 10:41:11 | * | dyu_ joined #nimrod |
| 10:44:50 | * | DAddYE joined #nimrod |
| 10:45:02 | * | Associat0r joined #nimrod |
| 10:45:02 | * | Associat0r quit (Changing host) |
| 10:45:02 | * | Associat0r joined #nimrod |
| 10:51:16 | * | DAddYE quit (Ping timeout: 245 seconds) |
| 12:14:23 | * | HappyClappy joined #nimrod |
| 12:14:24 | HappyClappy | hi |
| 12:26:39 | shevy | lol |
| 12:26:43 | shevy | that is the best nick I have ever read |
| 12:27:06 | * | shevy is now known as ClappyHappy |
| 12:27:11 | ClappyHappy | HappyClappy my brother! how are you |
| 12:34:24 | HappyClappy | I'm alright actually my parents have gone out and I got the house to myself |
| 12:39:24 | * | ClappyHappy is now known as shevy |
| 12:48:26 | * | DAddYE joined #nimrod |
| 12:51:48 | * | Ricky_Ricardo joined #nimrod |
| 12:54:46 | * | DAddYE quit (Ping timeout: 246 seconds) |
| 12:55:57 | * | wlhlm joined #nimrod |
| 13:02:33 | * | io2 joined #nimrod |
| 13:39:22 | * | Varriount joined #nimrod |
| 13:39:41 | Varriount | clear |
| 13:40:38 | Varriount | So, I offered on the forums to host a build bot for windows. I was told to contact dom96? |
| 13:51:23 | * | DAddYE joined #nimrod |
| 13:58:00 | * | DAddYE quit (Ping timeout: 252 seconds) |
| 13:59:55 | * | Varriount quit (Ping timeout: 250 seconds) |
| 14:02:54 | * | Varriount joined #nimrod |
| 14:06:37 | * | Ricky_Ricardo quit (Quit: Ricky_Ricardo) |
| 14:23:38 | * | HappyClappy quit () |
| 14:27:00 | * | Endy joined #nimrod |
| 14:32:05 | * | [1]Endy joined #nimrod |
| 14:34:58 | * | Endy quit (Ping timeout: 240 seconds) |
| 14:34:58 | * | [1]Endy is now known as Endy |
| 14:54:28 | * | DAddYE joined #nimrod |
| 15:01:15 | * | DAddYE quit (Ping timeout: 252 seconds) |
| 15:07:50 | * | gdos joined #nimrod |
| 15:10:30 | * | gdos quit (Read error: Connection reset by peer) |
| 15:27:49 | * | MFlamer joined #nimrod |
| 15:30:06 | dom96 | Varriount: I am here now |
| 15:39:12 | * | Endy quit (Ping timeout: 252 seconds) |
| 15:43:01 | * | sdff joined #nimrod |
| 15:43:23 | * | sdff quit (Client Quit) |
| 15:53:33 | * | dyu_ quit (Quit: Leaving) |
| 15:53:39 | * | whospal joined #nimrod |
| 15:54:00 | whospal | Hi |
| 15:55:04 | whospal | I'm new to nimrod. After having learn Python & play with Go, find Nimrod is rather refreshing as a programming language. Combining the strength of compilation with Python like programming ease. |
| 15:55:17 | whospal | One feedback: |
| 15:55:19 | dom96 | hello whospal |
| 15:55:39 | whospal | Hello |
| 15:56:42 | whospal | I find the syntax doesn't seem to be consistant. |
| 15:57:19 | * | DAddYE joined #nimrod |
| 15:57:21 | whospal | Eg. Arrays. Why use "array[0..5, int]"? |
| 15:58:06 | * | MFlamer quit (Remote host closed the connection) |
| 15:58:21 | whospal | Shouldn't it be "array[0..5]: int"? since the type of a variable seems to be followed with |
| 15:58:31 | whospal | ": <type>"? |
| 16:00:05 | whospal | Same for Sets. Shouldn't it be "set[]: char" instead of "set[char]"? |
| 16:01:03 | whospal | For Enum, using "type TDirection = enum north, east, south, west" seems weird. |
| 16:01:42 | Trixar_za | Try both. Generally the syntax is pretty flexible even though the documentation doesn't always list it as such. |
| 16:01:54 | whospal | Shouldn't it be "type TDirection = enum[north, east, south, west" or "... enum{north, east, south, west}" |
| 16:02:36 | whospal | I think these suggestions would be more consistant & intuitive. |
| 16:02:52 | whospal | I see. |
| 16:03:09 | dom96 | It wouldn't be consistent with the way generics work |
| 16:03:14 | * | DAddYE quit (Ping timeout: 264 seconds) |
| 16:03:20 | whospal | I don't mind helping to update the document if the language has good potential. ;) |
| 16:03:29 | whospal | I'm a bit of a perfectionist. |
| 16:03:34 | dom96 | it makes perfect sense. the stuff in the [] is the arguments to the type if you wanna call it that. |
| 16:04:40 | * | Endy joined #nimrod |
| 16:05:06 | dom96 | Same way as in C++ you would have: vector<char> |
| 16:05:13 | dom96 | in Nimrod it's: seq[char] |
| 16:06:20 | whospal | It can be confusing to newbies because [] is usually for [index] referencing. Perhaps <> is a better choice then? |
| 16:06:52 | whospal | Anyway, thanks for explaining with reference to C++. |
| 16:07:20 | whospal | I just find the syntax for array & enum not intuitive. |
| 16:07:37 | dom96 | If we designed Nimrod for newbies then we would have made everything as close as possible to some other existing language, but then what would be the point? |
| 16:08:12 | whospal | Well, the point is that it'll be easier for others to pick up. |
| 16:08:16 | whospal | ;) |
| 16:08:19 | dom96 | And Araq has good reasons for not using <> |
| 16:08:29 | whospal | I see. |
| 16:08:54 | whospal | I just think that enum x, y, z is not that intuitive. |
| 16:09:41 | * | fowl joined #nimrod |
| 16:09:47 | dom96 | why? |
| 16:09:51 | whospal | "array[0..5, int]" too. "array[0..5]: int" would be better. |
| 16:10:34 | dom96 | And how would that look with multi-dimensional arrays? |
| 16:10:53 | dom96 | :P |
| 16:11:04 | whospal | using just "enum x,y,z" , when reading, people may missed the "space". Using "enum(x,y,z)" seems clearer. |
| 16:12:35 | whospal | Perhaps for multi-dim arrays, use "array[0..5][0..2]:int"? or as the Tutorial #1, use nested arrays. |
| 16:13:22 | whospal | Just for Araq's consideration. |
| 16:13:38 | dom96 | how would you nest the types with your proposed syntax though? |
| 16:14:08 | whospal | MHO is that a good programming language should be intuitive, clear & consistant. That's why python is getter popular. |
| 16:14:43 | whospal | To me, although Golang has it's strength, it's syntax is too C like. |
| 16:14:48 | dom96 | I don't think what you propose would be much clearer. |
| 16:15:29 | whospal | type TDirection = enum (n, e, s, w) |
| 16:15:55 | fowl | whospal, you know that syntax is the most minor detail of a language right |
| 16:16:04 | dom96 | As for the enum syntax, there should be a newline after the 'enum' |
| 16:16:46 | whospal | TBlinkLights = enum (off, on, sBlink, mBlink, fBlink) |
| 16:17:02 | fowl | whospal, also there is a mechanism for using alternative syntaxes, you just have to write a parser |
| 16:17:21 | dom96 | the parenthesis and indentation based syntax don't mix. |
| 16:17:28 | dom96 | IMO |
| 16:17:29 | whospal | Er.. think I'm typing too much. |
| 16:17:32 | whospal | Sorry, |
| 16:17:44 | whospal | For multi-array... how about: |
| 16:19:07 | whospal | type TLightTower = array[1..10]: array[n..w] :TBlinkLights |
| 16:19:47 | dom96 | you're assuming that both arrays will have the same type. |
| 16:20:28 | whospal | So, Nimrod will check that 'enum' must have a newline? |
| 16:20:40 | dom96 | I don't see how that syntax makes things clearer tbh |
| 16:20:52 | dom96 | Not sure, I think it might |
| 16:21:11 | whospal | er... what is tbh? |
| 16:21:14 | dom96 | to be honest |
| 16:21:19 | whospal | haha |
| 16:21:22 | whospal | i c |
| 16:21:43 | whospal | too long I've not use IRC to chat... |
| 16:21:45 | fowl | type TFoo=enum a,b,c works fine |
| 16:23:41 | whospal | Will play with nimrod more. fowl's suggestion to try the parser is interesting. I'll look into that. |
| 16:24:33 | whospal | I just start with Tutorial#1. haha... Perhaps will understand Nimrod's design better with Tutorial #2. |
| 16:25:17 | whospal | So, how many are in the dev team for nimrod? |
| 16:26:44 | Araq | ping Varriount, dom96 |
| 16:26:53 | dom96 | Araq: sup |
| 16:27:01 | dom96 | whospal: 3 I guess |
| 16:27:13 | Araq | talk with Varriount, he likes to setup a windows tester |
| 16:27:15 | whospal | Wow. |
| 16:27:37 | dom96 | Araq: I know, I think he's AFK. |
| 16:27:50 | whospal | 3 only. Golang seems to have 6 or more as the core team? |
| 16:29:29 | dom96 | Yes, Golang also has Google behind it... |
| 16:29:38 | whospal | Admire all the good effort. Got to go. Nice chatting with you guys. Thanks for the responses. |
| 16:30:18 | Araq | and |
| 16:30:27 | Araq | we're doing it on our spare time |
| 16:30:57 | whospal | I like python. Very easy to pick up. But for big project, it's slow to start up. :( That's why I look into Golang. |
| 16:31:17 | whospal | Cool! You guys rocks! |
| 16:31:41 | whospal | Really got to go. Passed midnight... got to zzz. |
| 16:31:45 | whospal | Bye! |
| 16:31:49 | dom96 | bye whospal |
| 16:32:07 | * | whospal quit (Quit: irc2go) |
| 16:33:47 | * | DAddYE joined #nimrod |
| 16:35:56 | * | gdos joined #nimrod |
| 16:40:11 | Varriount | Is there any specific method to running the nimrod compiler tests? The method I'm using seems to show quite a lot of test errors... |
| 16:40:46 | Araq | koch tests |
| 16:41:12 | Araq | runs the test suite |
| 16:56:14 | * | gdos quit (Read error: Connection reset by peer) |
| 16:57:44 | Varriount | Hm, is the pcre.dll included with Nimrod built for 32, or 64 bit machines |
| 16:59:06 | Araq | 32 bits |
| 17:03:08 | * | gdos joined #nimrod |
| 17:04:30 | * | brson joined #nimrod |
| 17:36:14 | Varriount | Wow, the test program is actually making use of multiple cores. That's a surprise for me. |
| 17:38:04 | Araq | it doesn't, the compiler itself does |
| 17:47:04 | * | Varriount gives a cookie to Araq |
| 17:47:48 | Araq | er ... thanks. I guess |
| 17:51:19 | * | Varriount quit (Ping timeout: 250 seconds) |
| 18:00:45 | fowl | twist: its a tracking cookie |
| 18:04:04 | Araq | hey fowl |
| 18:04:59 | Araq | how's that kick-ass 3d engine doing? |
| 18:06:02 | fowl | not well |
| 18:08:47 | Araq | aww why not |
| 18:11:22 | * | d34th quit (Quit: Deleted System32) |
| 18:11:29 | * | cablehead joined #nimrod |
| 18:11:33 | * | cablehead quit (Remote host closed the connection) |
| 18:11:49 | * | cablehead joined #nimrod |
| 18:12:18 | dom96 | hello cablehead |
| 18:12:49 | Araq | hi cablehead welcome |
| 18:12:49 | cablehead | hi dom96 |
| 18:14:18 | cablehead | Hi Araq, you've created an amazing thing |
| 18:14:46 | Araq | yeah and the best parts are not even documented nor implemented :P |
| 18:16:35 | cablehead | what are your thoughts on getting Nimrod to critical mass? |
| 18:16:50 | cablehead | are there small ways user's can help out? |
| 18:17:31 | Araq | well finding and fixing bugs in particular is desperately needed |
| 18:18:16 | Araq | unfortunately not many are able to dig into the compiler's source code |
| 18:19:35 | Araq | what's really needed to get critical mass is commercial support tbh |
| 18:19:51 | Araq | 3 guys working on it in their spare time hardly cuts it |
| 18:19:56 | fowl | Araq, i need to take some math classes or something, learn matrix math and stuff like that |
| 18:22:46 | Araq | fowl: nah you only have to translate ~300K LOC of C++ into Nimrod ;-) |
| 18:23:14 | fowl | that sounds a lot easier |
| 18:23:19 | fowl | what project is that |
| 18:23:25 | dom96 | all you need is wikipedia |
| 18:23:27 | Araq | we have c++2nim now |
| 18:23:39 | Araq | but it's still called c2nim |
| 18:23:50 | fowl | neat |
| 18:24:27 | cablehead | Araq: is there much commercial interest? We'd be very interesting in switch from Go to Nimrod here, but yeah, it's daunting that if you guys disappear, the project would stall |
| 18:26:41 | Araq | fortunately there is some interest, yes |
| 18:39:34 | dom96 | cablehead: Nice to hear that you are interested in Nimrod. I'm sure if you hired the core devs then the project would not stall :P |
| 18:41:44 | gurug33k | lol |
| 18:49:39 | fowl | Araq, what c++ project were you talking about |
| 18:50:00 | fowl | i cant think of anything to write, so porting sounds doable --_- |
| 18:50:13 | Araq | "source" engine? doom 3's engine? I dunno |
| 18:51:52 | Araq | just start the project in nimrod and reddit it |
| 18:52:10 | Araq | and soon you'll have all the fame and lots of contributors |
| 18:53:04 | fowl | h8 reddit |
| 18:56:54 | * | [1]Endy joined #nimrod |
| 18:57:14 | * | Endy quit (Ping timeout: 264 seconds) |
| 18:57:14 | * | [1]Endy is now known as Endy |
| 19:10:34 | dom96 | cablehead: Out of curiosity why are you thinking of leaving Go? |
| 19:10:55 | cablehead | dom96: have you spent much time with Go? |
| 19:11:05 | dom96 | not really |
| 19:11:06 | cablehead | just trying to gauge where to pitch the answer |
| 19:12:06 | cablehead | Also, just double checking, does Nimrod allow optional manual memory management? |
| 19:14:17 | fowl | yes |
| 19:15:08 | cablehead | Soo yeah, I think it was a mistake for Go not to allow manual memory management, and in addition to that, it's GC is a mess |
| 19:15:32 | cablehead | It's hard to describe just why, but coding in Go is constantly slow and awkward |
| 19:15:47 | cablehead | kind of like working with lego pieces that don't quite fit together |
| 19:15:50 | dom96 | oh, I wasn't aware that Go does not allow manual memory management. |
| 19:17:05 | cablehead | the tools it gives to compose libraries are good in theory.. but in practice, it's hard to libs to abstract away tedious repetitive code |
| 19:17:14 | cablehead | *hard to create |
| 19:17:27 | orbitz | interesting since the crazy on the nets is how writingin Go is quick and unawkward |
| 19:17:31 | cablehead | 50% of go code is if err != nil |
| 19:17:33 | cablehead | { |
| 19:17:48 | orbitz | error handling in Go seems pretty abysmal |
| 19:18:10 | cablehead | encouraging c style immediate checking of errors is good for system code |
| 19:18:31 | cablehead | but it's really tedious a lot of the time, and not always safer |
| 19:18:59 | orbitz | I think yo udon't want to encourage, you want to enforce |
| 19:19:13 | orbitz | Which would be rather easy if Go had ADTs |
| 19:19:15 | dom96 | That has been my prediction when I first saw Go's error handling, that most of the code would just be checking the return values of each function. |
| 19:19:26 | * | Endy quit (Ping timeout: 264 seconds) |
| 19:19:29 | dom96 | or just ignoring the return value which sounds much worse. |
| 19:19:33 | orbitz | heh yes |
| 19:20:05 | orbitz | In my ocaml code i have an error monad that gives exception-like flow but gives me typechecking on handler errors |
| 19:20:11 | cablehead | dom96: yeah, there's a lot of juggling variables just to continually track error handling |
| 19:24:04 | Araq | cablehead: we not only have exception handling but also "exception tracking" so the compiler can prove for you you didn't miss to handle an exception. best of all worlds imo. |
| 19:27:40 | cablehead | Araq: yes, it's really nice |
| 19:38:19 | * | Endy joined #nimrod |
| 19:50:46 | cablehead | What's Nimrods outlook on green threads or coroutines? |
| 19:51:24 | cablehead | Quickly skimming, I got the impression they might already be provided by Nimrod's iterators? |
| 19:51:49 | Araq | yeah that are misnomed as "closure iterators" |
| 19:52:08 | Araq | and are the base for nimrod's new async stuff that's quite like C#'s |
| 19:53:47 | cablehead | interesting .. I was thinking about composing them into a mini-framework with scheduling etc, that might look familiar for say gevent users, as a weekend project |
| 19:54:55 | cablehead | if it makes sense to use "closure iterators" in that way? |
| 19:56:27 | Araq | the manual has an example that does that |
| 19:56:52 | Araq | unfortunately it turned out closure iterators are the buggiest feature of 0.9.2 and I still haven't found the time to fix them |
| 19:58:03 | cablehead | gotcha |
| 19:58:47 | * | d34th joined #nimrod |
| 20:07:28 | * | Endy quit (Ping timeout: 240 seconds) |
| 20:26:58 | * | Endy joined #nimrod |
| 20:28:08 | * | fowl quit (Ping timeout: 256 seconds) |
| 20:35:06 | * | Endy quit (Ping timeout: 252 seconds) |
| 20:41:29 | * | fowl joined #nimrod |
| 20:54:40 | * | wlhlm quit (Ping timeout: 260 seconds) |
| 21:05:35 | * | Boscop quit (Read error: Connection reset by peer) |
| 21:05:54 | * | Boscop joined #nimrod |
| 21:24:51 | * | comex is now known as dumbledore |
| 21:49:05 | cablehead | sorry, super basic question, is there a power operator? e.g. 2^3 or 2**3 ? |
| 21:49:49 | dom96 | math.pow: http://build.nimrod-code.org/docs/math.html#134 |
| 21:50:05 | dom96 | I don't think an operator has been added yet |
| 21:51:11 | Araq | template `^`*(a, b: expr): expr = pow(a, b) |
| 21:51:30 | Araq | template `**`*(a, b: expr): expr = pow(a, b) |
| 21:51:56 | cablehead | thanks |
| 21:53:42 | * | Demos_ joined #nimrod |
| 21:54:43 | Demos_ | I have proc foo[A](e: bar) : var A and the compiler just says "cannot instantiate 'A'" if I remove var it works, anthing I should be aware of |
| 21:55:23 | Araq | Demos_: the current implementation GCs seqs, but since they too have value semantics there is no need for that; so I'd simply relax and wait until they are optimized more |
| 21:56:40 | Araq | Demos_: do you instantiate explicitly via foo[int](x) ? |
| 21:58:24 | Demos_ | that was ... interesting timing ... but thanks! |
| 21:59:59 | Araq | maybe I read the logs |
| 22:02:37 | Demos_ | I am instanciateing as ent.foo[int] which come to think of it, looks a lot like an array access |
| 22:03:34 | fowl | cant use dot notation with explicit instantiation |
| 22:03:46 | Demos_ | ahhhh, allright |
| 22:06:57 | cablehead | if I wanted a version of pow that worked with ints, instead of floats, what would be the best approach to take? |
| 22:07:01 | cablehead | e.g. proc pow*(x, y: int): int |
| 22:10:34 | Araq | proc pow(a, b: int): int = |
| 22:10:35 | Araq | var a = a |
| 22:10:37 | Araq | var b = b |
| 22:10:38 | Araq | result = 1 |
| 22:10:40 | Araq | while true: |
| 22:10:41 | Araq | if (b and 1) == 1: |
| 22:10:43 | Araq | result *= a |
| 22:10:44 | Araq | b = b shr 1 |
| 22:10:46 | Araq | if b == 0: break |
| 22:10:47 | Araq | a *= a |
| 22:11:20 | Araq | there are better algorithms iirc but I'd go with this one |
| 22:12:01 | dom96 | how about just reusing the float version? proc pow(x, y: int): int = pow(x.float, y.float).int |
| 22:13:03 | cablehead | template `^`*(a, b: expr): expr = math.pow(a.float, b.float).int |
| 22:13:11 | cablehead | had no joy with ^^ |
| 22:13:20 | cablehead | rror: constant expression expected |
| 22:14:07 | dom96 | Works for me. |
| 22:15:13 | * | dumbledore is now known as comex |
| 22:15:18 | dom96 | How are you using it? |
| 22:15:46 | * | Amrykid quit (Changing host) |
| 22:15:46 | * | Amrykid joined #nimrod |
| 22:16:15 | cablehead | https://gist.github.com/cablehead/e18bf5cb2ae25d147802 |
| 22:16:24 | Araq | dom96: reusing the float version seems like a bad idea |
| 22:17:15 | Araq | cablehead: well for "const" you request compile time evaluation |
| 22:17:35 | Araq | and guess what "math.pow" is a thin C wrapper which the compiler cannot evaluate at compile time |
| 22:17:47 | cablehead | oops, sorry, that shouldn't have been a const |
| 22:17:54 | cablehead | sorry, undo buffer when awry |
| 22:17:55 | Araq | unless perhaps with -d:useFFI |
| 22:20:16 | Demos_ | wait if I have proc foo[A](e: bar) : var A can I just implicitly instanciate it based on the return type? |
| 22:20:25 | Demos_ | I will try it |
| 22:20:43 | Araq | you can't |
| 22:20:47 | Demos_ | :( |
| 22:20:56 | Araq | there is 'auto' for return types though |
| 22:21:10 | Demos_ | yeah, but I know the return type |
| 22:21:27 | Demos_ | presumably you can overload on the return type though |
| 22:21:56 | Demos_ | sometimes I miss teh haskellz |
| 22:22:02 | Araq | no you can't |
| 22:22:07 | Araq | it's often requested |
| 22:22:15 | Araq | but won't happen before 1.0 |
| 22:22:18 | Araq | is out |
| 22:22:51 | Demos_ | oh, I figured that discard was kinda designed for that |
| 22:23:51 | * | OrionPK joined #nimrod |
| 22:24:24 | Araq | discard was designed to annoy "omg I need to chain everywhere" c++ users |
| 22:25:19 | Demos_ | chaining becomes pretty pointless with names params though |
| 22:25:23 | Demos_ | and macros |
| 22:25:54 | Demos_ | hm I figured it was to prevent people from ignoring error codes and to enable overloading on return values |
| 22:26:18 | Araq | actually it's here to prevent bugs |
| 22:26:23 | Araq | and it does |
| 22:27:10 | Araq | even though rndbit doesn't believe it |
| 22:27:35 | Demos_ | well yeah the error codes, still return value overloading would be a neat little perk |
| 22:29:00 | Araq | for instance recently I typed a == 3 instead of a = 3 and got an error "value needs to be discarded" |
| 22:29:39 | Araq | it's not only about you shouldn't ignore error codes |
| 22:49:10 | fowl | xlib.nim doesnt compile with -d:macros |
| 22:49:45 | Araq | fowl: then fix it |
| 22:49:51 | fowl | i am |
| 22:49:55 | fowl | but its a lot of work just so u know |
| 22:50:03 | * | Varriount joined #nimrod |
| 22:54:50 | Araq | while you're at it, change the MACROS name into something more meaningful |
| 22:54:53 | Araq | please |
| 22:55:07 | Araq | it's confusing |
| 22:57:25 | Araq | good night |
| 22:57:35 | fowl | can i just remove it since it comes with xlib and used a lot in X11 code |
| 22:58:05 | fowl | good night |
| 23:00:25 | Araq | yeah removing it is fine with me |
| 23:00:27 | Araq | bye |
| 23:01:44 | fowl | ciao |
| 23:02:06 | Varriount | Under what circumstances would the creation of an AsyncSocket fail? |
| 23:04:10 | fowl | Varriount, dom96 is the asyncio guy |
| 23:04:28 | Varriount | And he's asleep -_- |
| 23:04:51 | Varriount | Grr, I have a love/hate relationship with Windows. |
| 23:06:19 | * | Demos_ quit (Ping timeout: 268 seconds) |
| 23:07:28 | * | io2 quit () |
| 23:08:45 | cablehead | it feels a little weird to use and, or etc for bitwise operations |
| 23:08:52 | cablehead | instead of | & |
| 23:09:21 | fowl | weird as typing shr/shl instead of >>/<< |
| 23:09:29 | cablehead | yes |
| 23:09:41 | cablehead | and shr/shl are weird too :) |
| 23:18:02 | * | Demos_ joined #nimrod |
| 23:19:00 | Varriount | cablehead, you could always make aliases, like `<<<' and '>>>' |
| 23:21:24 | fowl | ugh this needs pointer arithmetic |
| 23:22:56 | * | q66 quit (Quit: Leaving) |
| 23:25:45 | cablehead | Varriount: I'm concerned if aliasing is encouraged, there will wind up being a ton of ways to do everything |
| 23:29:06 | Varriount | True |
| 23:30:28 | Varriount | Part of Nimrod I find really fascinating is the fact that there is little distinction between 'methods' and 'functions', eg, functions bound to a class, vs functions not bound to a class |
| 23:31:04 | cablehead | Yeah, that's really nice |
| 23:32:21 | * | Demos_ quit (Ping timeout: 248 seconds) |
| 23:34:24 | * | Demos_ joined #nimrod |
| 23:43:21 | * | Demos_ quit (Ping timeout: 245 seconds) |
| 23:46:49 | fowl | Varriount, methods are not bound, they are functions which use multiple dispatch |
| 23:47:51 | fowl | if you want bound methods you can use a vtable pattern like streams.nim uses |
| 23:48:40 | Varriount | fowl, what I mean is, "Hello".len() and len("Hello") are the same. |
| 23:49:51 | fowl | oh |
| 23:49:58 | fowl | you dont need the empty ()s btw |
| 23:51:54 | Varriount | I know. But the Python/Java in me demands I must. |