00:00:05 | flaviu | It even causes a warning on the same line: Warning: not GC-safe: 'args' [GcUnsafe] |
00:00:42 | Araq | well yeah, but you can ignore this warning |
00:01:56 | flaviu | I'm also getting an internal error, and I'm hoping that it'll help me isolate it. |
00:02:14 | Araq | yay |
00:02:21 | * | lbmn joined #nimrod |
00:03:30 | EXetoC | either way, it doesn't hurt to introduce an extra line |
00:03:47 | Araq | (proc () = echo "hi")() |
00:04:08 | Araq | since when count () as Perlish? |
00:04:33 | EXetoC | since the recent de-obfuscation of perl |
00:04:45 | Araq | Lisp is Perlish then |
00:05:10 | * | BlaXpirit quit (Quit: Quit Konversation) |
00:05:23 | flaviu | Araq: It's a joke to compare unreadable code to perl |
00:06:05 | EXetoC | is it still difficult to read other people's code if you know the language well? |
00:06:37 | Araq | EXetoC: I think the problem is that knowing Perl well is like knowing C++ well |
00:06:44 | flaviu | I've played with perl a bit because of Marpa::R2, and it seemed like a decent language |
00:06:48 | Araq | hardly anybody qualifies |
00:07:11 | flaviu | A little odd, but it's usable and mostly readable. It feels like shell. |
00:07:38 | Araq | perhaps but I loathe shells |
00:07:56 | gokr | Perl is ... awful. |
00:08:04 | gokr | On the other hand, what is Perl these days? |
00:08:06 | Araq | bug prone as hell with all these weird quoting rules |
00:08:27 | gokr | I helped a rather big company with a huge server system written in 30 differen daemons in Perl. |
00:08:37 | gokr | It was a nightmare. |
00:08:46 | EXetoC | we need a shell DSL |
00:09:07 | flaviu | Well, I found the problem: const foo: seq[string] = @[] causes internal errors |
00:09:08 | gokr | Perlers tend to love sending nested hashes around. No OO tradition at all. And the scoping rules are ... well, I dunno what they are. |
00:09:18 | flaviu | And it looks like I've already reported it :D |
00:09:20 | Araq | ldlework: oh btw you reinvented 'prelude'. include prelude and off you go. |
00:10:19 | flaviu | Oh, and ldlework also reported it today! |
00:11:40 | flaviu | wait, no. That was just very similar |
00:12:55 | Araq | yes and bug #1354 is also similar |
00:14:31 | * | Matthias247 quit (Read error: Connection reset by peer) |
00:16:05 | flaviu | Araq: You said you would move the channel tonight. |
00:16:28 | Araq | flaviu: no I said dom96_ should do it |
00:16:52 | flaviu | dom96, dom96_: Lets move the channel! |
00:17:59 | EXetoC | dom96!!11111oneone |
00:21:30 | dom96_ | ok. |
00:25:11 | EXetoC | c(:)|< |
00:25:12 | gokr | Ok, time to sleep. gnite |
00:25:18 | dom96_ | Argh. I can't RDP into my desktop. |
00:25:21 | dom96_ | So not today. |
00:26:11 | flaviu | ldlework: The snippet page rendering is done: http://a.pomf.se/ybxrza.html |
00:28:04 | dom96_ | flaviu: What's this? |
00:28:08 | dom96_ | Is that your cat? |
00:28:17 | flaviu | No, some cat I found on the imgur. |
00:28:28 | flaviu | s/the// |
00:28:57 | flaviu | It's rendered from https://github.com/nimlets/nimlets.github.io/blob/master/snippets/test.nim |
00:32:02 | lbmn | http://www.reddit.com/r/nimrod/comments/2ox2cg/nim_advocacy_promotion_strategies/ |
00:32:56 | dom96_ | lbmn: Cool. Post it on the forum please! |
00:33:10 | dom96_ | flaviu: What are you making? |
00:35:05 | flaviu | dom96_: Something that takes a collection of files like the one I linked and renders and indexes them |
00:37:13 | dts|pokeball | morning |
00:37:19 | dts|pokeball | even though im leaving soon |
00:38:41 | lbmn | I think CAPTCHA on http://forum.nimrod-lang.org/register is broken. |
00:39:05 | dts|pokeball | do the blue text |
00:39:40 | flaviu | It seems broken to me too. |
00:39:56 | flaviu | It's always 3+470 |
00:39:56 | dts|pokeball | works fine for m |
00:39:58 | dts|pokeball | e |
00:39:58 | onionhammer | ldlework the logo flashes when you navigate because the browser doesnt cache it locally |
00:41:32 | lbmn | http://libman.org/img/scr/nimforum.jpg |
00:42:00 | dts|pokeball | huh... guess im wrong |
00:42:16 | dts|pokeball | are you a bot lbmn ? |
00:42:53 | lbmn | Maybe, but one with all aspects of human self-awareness. |
00:43:26 | flaviu | lbmn: Sentient AIs are not welcome either :/ |
00:43:41 | lbmn | You bigot! :P |
00:43:57 | Araq | hi lbmn wb |
00:46:43 | dts|pokeball | lbmn, see, if we let you in, then we have to let hal in, and then the depressed bot from HHGTTG, and then it becomes this whole big thing |
00:49:42 | flaviu | lbmn: It's ok, I'm secretly a bot too: http://i.imgur.com/6OFpB2E.png |
00:49:44 | dom96_ | dts|pokeball: We need to let Marvin in! |
00:50:06 | dts|pokeball | never! |
00:50:09 | dom96_ | lbmn: Did you fill in a password? |
00:51:18 | lbmn | Yes. |
00:52:16 | dts|pokeball | thinks im a bot too |
00:52:50 | flaviu | Is this some sort of secret bot convention? |
00:52:56 | Araq | good night |
00:53:08 | lbmn | I am seriously for AI Rights, BTW. (And against Animal Rights.) All "Rational Economic Actors" should be equal in their negative Rights. Maybe self-aware apps is something that Nim can specialize in! :P |
00:53:29 | dts|pokeball | flaviu, not that i was aware of. tbh i thought i was dts and not dtsbot |
00:54:10 | flaviu | lbmn: "Rational Economic Actors". Some congressmen would be very upset.. |
00:54:56 | lbmn | As OCR libraries get better, CAPTCHA will become useless. Instead of asking if you're a bot, a phone number verification API would be a lot more useful. |
00:55:15 | flaviu | lbmn: Have you seen google's new capacha? |
00:55:58 | flaviu | It uses the same code as gmail's anti-bot system. |
00:56:57 | flaviu | And with google analytics all over the web, google knows for certain if you're a bot or not. |
00:57:10 | lbmn | When I was facing 3 years in jail for my activism, I thought about writing a computer system that could be interacted with by paper mail, which you can send / receive in unlimited quantities from jail. You write commands on paper. Mail me this book, google this, print last search result #X max Y pages, move Nf3 Nc6 in chess game B, etc. |
00:58:33 | lbmn | If Google decides it doesn't like you (or government forces it), too many things in this world will break. |
00:58:40 | lbmn | Anyway, sorry, too much offtopic. |
00:59:34 | dom96_ | hrm. Something is indeed wrong with the forum. |
01:06:24 | * | kniteli quit (Remote host closed the connection) |
01:09:17 | * | kniteli joined #nimrod |
01:21:15 | dom96 | lbmn: Can you try it now? |
01:26:27 | lbmn | Don't have time to convert syntax now. |
01:27:48 | dom96 | I mean. Can you try registering? |
01:31:53 | * | dom96_ quit (Read error: No route to host) |
01:35:38 | dts|pokeball | guys... nimrod looks a lot like boo |
01:37:14 | flaviu | dts|pokeball: Nim looks a lot like python, and boo looks a lot like python for the CLR |
01:37:34 | * | yglukhov___ joined #nimrod |
01:37:34 | dts|pokeball | good point |
01:41:50 | * | yglukhov___ quit (Ping timeout: 250 seconds) |
01:45:16 | lbmn | Registration worked. http://forum.nim-lang.org/profile/Libman |
01:47:07 | * | lbmn quit (Remote host closed the connection) |
02:04:46 | * | darkf joined #nimrod |
02:21:37 | * | q66 quit (Quit: Leaving) |
02:24:29 | * | johnsoft quit (Ping timeout: 272 seconds) |
02:24:44 | * | johnsoft joined #nimrod |
02:45:38 | * | willwillson_ joined #nimrod |
02:46:01 | * | willwillson quit (Ping timeout: 272 seconds) |
03:01:07 | * | j3rky quit (Quit: Konversation terminated!) |
03:05:21 | dts|pokeball | does nimble build nim projects? |
03:07:15 | * | nande joined #nimrod |
03:16:08 | * | brson quit (Quit: leaving) |
03:26:23 | * | yglukhov___ joined #nimrod |
03:30:55 | * | yglukhov___ quit (Ping timeout: 264 seconds) |
03:50:28 | * | yglukhov___ joined #nimrod |
03:54:52 | * | yglukhov___ quit (Ping timeout: 245 seconds) |
03:58:37 | * | flaviu quit (Ping timeout: 255 seconds) |
04:14:07 | * | willwillson_ quit (Ping timeout: 264 seconds) |
04:47:55 | * | AMorpork is now known as AFKMorpork |
04:53:00 | dts|pokeball | Araq, ping |
05:14:29 | dts|pokeball | nim still has the irc module right? |
05:19:02 | * | ARCADIVS joined #nimrod |
06:57:45 | * | BlaXpirit joined #nimrod |
07:10:51 | * | gour joined #nimrod |
07:15:38 | * | bjz joined #nimrod |
07:17:37 | * | gokr_ quit (Ping timeout: 240 seconds) |
07:18:20 | * | gokr_ joined #nimrod |
07:30:24 | * | dts|pokeball quit (Read error: Connection reset by peer) |
07:31:05 | * | dts|pokeball joined #nimrod |
07:32:08 | * | BlaXpirit quit (Quit: Quit Konversation) |
07:41:29 | * | gokr_ quit (Remote host closed the connection) |
07:42:18 | * | gokr_ joined #nimrod |
07:42:18 | * | gokr_ quit (Read error: Connection reset by peer) |
07:42:28 | * | gokr_ joined #nimrod |
07:47:24 | * | starless quit (Quit: WeeChat 0.4.2) |
07:51:05 | gokr | dts|pokeball: Yes, "nimble --help" shows what it can do. |
07:51:19 | dts|pokeball | i figured it out |
07:51:24 | dts|pokeball | thanks though |
07:54:51 | * | dyu joined #nimrod |
08:11:55 | dts|pokeball | welp... just got the compiler to throw an ICE. yay me |
08:14:38 | dts|pokeball | http://paste.ubuntu.com/9473083/ can someone tell me why this is saying: Error: internal error: (filename: compiler/ccgexprs.nim, line: 921) |
08:26:44 | dts|pokeball | if someone figures it out i would be much obliged if you could leave the answer with mesgserv. i unfortunately have to shut down |
08:27:48 | * | kniteli quit (Ping timeout: 258 seconds) |
08:31:18 | dts|pokeball | huh... never mind... as it turns out echo cant print seq's |
08:32:13 | * | kapil__ joined #nimrod |
08:32:16 | * | matkuki joined #nimrod |
08:41:01 | * | Trustable joined #nimrod |
08:48:58 | * | milosn quit (Ping timeout: 244 seconds) |
08:53:37 | * | dts|pokeball quit (Ping timeout: 244 seconds) |
09:04:45 | * | milosn joined #nimrod |
09:06:54 | matkuki | Hi, is there a way to define a proc or a proc definition within the 'type' block? |
09:08:36 | matkuki | A way to specify all of the proc's/method's that are bound to a type? |
09:10:58 | * | khmm joined #nimrod |
09:14:48 | * | kniteli joined #nimrod |
09:17:09 | gokr | matkuki: AFAIK no. There are macros floating around, and there probably will be some standard macros eventually - but also remember that we have multidispatch here so its not necessarily only ONE type. |
09:18:23 | gokr | Araq: The bug with fields not handling inherited fields is already reported. I also note that this means ==, < and <= don't work either with inheritance. See: https://github.com/Araq/Nimrod/issues/1352 |
09:19:02 | gokr | I tried following the code in compiler but... sorry, too incomprehensible to me as of yet. ;) |
09:22:43 | matkuki | gokr: Can you point me to these macros you mentioned? I'm just looking for something to make the code more readable to me. |
09:23:39 | gokr | Some Nim links: http://goran.krampe.se/nim/ |
09:23:49 | gokr | And the one you want: http://nimrod-by-example.github.io/oop_macro/ |
09:25:27 | gokr | matkuki: You might want to look at the OO articles on my site there (the first link) |
09:25:49 | gokr | I intend to write a summary article on OO too. |
09:25:58 | matkuki | gokr: brilliant, just what I'm looking for, thanks! |
09:26:12 | * | nande quit (Remote host closed the connection) |
09:27:19 | * | kniteli quit (Ping timeout: 264 seconds) |
09:45:37 | * | ARCADIVS quit (Quit: ARCADIVS) |
10:06:15 | * | yglukhov___ joined #nimrod |
10:26:03 | * | bitcrusher1 joined #nimrod |
10:26:13 | bitcrusher1 | is there Aporia binaries? |
10:26:17 | * | bitcrusher1 is now known as bitcrusher |
10:38:07 | * | Sembei quit (Quit: WeeChat 1.1-dev) |
11:17:36 | bitcrusher | nimble build seems to work great |
11:21:30 | bitcrusher | damn got glib 2.0 error |
11:23:08 | * | bjz quit (Ping timeout: 256 seconds) |
11:25:41 | bitcrusher | fuck windows, such a pain in the ass |
11:26:20 | * | bjz joined #nimrod |
11:28:03 | * | Araq0 joined #nimrod |
11:28:22 | Araq0 | bitcrusher: the windows installer has the option of installing Aporia for you ... |
11:28:30 | Araq0 | it comes with all dependencies |
11:29:47 | Araq0 | it's however mostly a nicely working editor until I fixed a couple of idetools compiler bugs |
11:30:25 | * | Araq0 quit (Client Quit) |
11:31:47 | bitcrusher | doh! |
11:32:11 | * | flaviu joined #nimrod |
11:33:18 | bitcrusher | good news is I checked the box, gonna delete all these dependencies... |
11:35:03 | bitcrusher | i got aporia running but where does aporia look for libglib-2.0-0.dll |
11:36:05 | bitcrusher | oh i see inside gtk\bin |
11:40:47 | bitcrusher | heh got my hello world running |
11:43:49 | EXetoC | awesome |
11:46:34 | bitcrusher | will v0.100 = v1 of nim? |
11:47:40 | bitcrusher | also whos in charge of /r/nim |
11:55:53 | * | EXetoC quit (Remote host closed the connection) |
12:00:19 | * | flaviu quit (Ping timeout: 264 seconds) |
12:08:39 | * | jux quit (Quit: Leaving) |
12:15:30 | * | matkuki quit (Ping timeout: 258 seconds) |
12:29:33 | bitcrusher | hmm is there password recovery in the nim forums? |
12:48:54 | * | repax_ joined #nimrod |
12:56:00 | * | AFKMorpork is now known as AMorpork |
13:19:18 | * | irrequietus joined #nimrod |
13:30:37 | * | BlaXpirit joined #nimrod |
13:31:10 | * | BitPuffin joined #nimrod |
13:44:07 | * | gokr_ quit (Ping timeout: 250 seconds) |
13:44:38 | * | gokr_ joined #nimrod |
13:54:01 | * | Varriount|Mobile joined #nimrod |
14:22:51 | * | Var|Mobile joined #nimrod |
14:23:54 | * | untitaker quit (Ping timeout: 256 seconds) |
14:26:53 | * | Varriount|Mobile quit (Ping timeout: 264 seconds) |
14:29:09 | * | untitaker joined #nimrod |
14:31:42 | * | EXetoC joined #nimrod |
14:36:36 | * | gour_ joined #nimrod |
14:40:25 | * | gour quit (Ping timeout: 272 seconds) |
14:50:11 | * | gour_ is now known as gour |
14:56:53 | * | gokr_ quit (Ping timeout: 258 seconds) |
14:58:47 | * | gokr_ joined #nimrod |
15:01:00 | * | repax_ is now known as repax |
15:02:07 | * | BlaXpirit quit (Ping timeout: 264 seconds) |
15:03:23 | * | brson joined #nimrod |
15:24:07 | * | Varriount|Busy joined #nimrod |
15:25:43 | Varriount|Busy | Araq: Any particular reason the streams module uses closure attributes for procedure delegation, rather than methods? |
15:26:48 | * | yglukhov___ quit (Ping timeout: 244 seconds) |
15:48:11 | * | darkf quit (Quit: Leaving) |
15:55:58 | * | nullmove joined #nimrod |
15:56:06 | Varriount|Busy | Hello nullmove |
15:56:27 | nullmove | hi |
15:56:39 | nullmove | the new site has been problematic for me the whole day |
15:56:45 | Varriount|Busy | Oh? Howso? |
15:57:04 | nullmove | occassionally doesn't load or very slow |
15:57:42 | Varriount|Busy | nullmove: Odd. Does this occur on a specific set of pages, or the entire site (including documentation)? |
15:58:28 | nullmove | the entire site, including redirects |
15:58:32 | Varriount|Busy | nullmove: Are you sure it isn't something on your end? The website loads fine for me. |
15:59:03 | Varriount|Busy | Do you have any browser extensions that could be causing problems? |
15:59:32 | Varriount|Busy | Also, what browser are you using? |
16:00:18 | nullmove | firefox, but let me reset the connection |
16:03:53 | * | nullmove_ joined #nimrod |
16:04:31 | * | nullmove quit (Ping timeout: 244 seconds) |
16:04:38 | Varriount|Busy | nullmove_: Any luck? |
16:05:03 | nullmove_ | yes loads now but quite slow still |
16:07:06 | Varriount|Busy | nullmove_: Can you open the web console and look at the 'Network' section? |
16:08:00 | Varriount|Busy | Right click a part of the webpage, select 'Inspect Element', and in the box that pops up, select the 'Network' tab, and click 'Reload' |
16:09:00 | nullmove_ | it stopped working again so nothing is showing up there |
16:09:41 | nullmove_ | I think my connection is otherwise fine and I have been experiencing slowdown the whole day |
16:11:28 | Varriount|Busy | Odd... maybe the server doesn't like you... |
16:13:58 | Varriount|Busy | nullmove_: Could you gist the output of 'traceroute nim-lang.org' and 'pring nim-lang.org'? (Use the 'tracert' command if you're on Windows) |
16:17:34 | nullmove_ | Varriount|Busy, https://gist.github.com/nullmove/705471deef9d23bcb69d |
16:18:12 | nullmove_ | style.css doesn't load |
16:18:23 | * | repax quit (Quit: HydraIRC -> http://www.hydrairc.com <- Organize your IRC) |
16:20:43 | Varriount|Busy | nullmove_: Odd... |
16:22:16 | Varriount|Busy | It's not like the stylesheet is even that large, it's only 20kb |
16:23:24 | Varriount|Busy | nullmove_: What happens when you try to access the site via IP (178.62.143.63) ? |
16:23:42 | nullmove_ | yeah, well if nobody else has reported difficulty it's probably me, still wanted to let you know |
16:24:22 | nullmove_ | same, doesn't load |
16:25:00 | Varriount|Busy | Hm, then it's not dns resolution issues... |
16:25:21 | Varriount|Busy | nullmove_: I don't know what else to do, sorry. |
16:34:28 | * | dom96_ joined #nimrod |
16:34:45 | dom96_ | Araq: I think a good idea of something to have in the ticker on the website would be our awesome stack traces. |
16:37:45 | * | superfunc joined #nimrod |
16:54:51 | * | nullmove_ quit (Ping timeout: 244 seconds) |
16:59:37 | gokr | Araq: I note that last linux64 build failed. I looked and... the t5000 binary was built at 19.14 - and the stamp of testament.db was also 19.14. My guess is that it was the last thing it was running (and timedout). |
16:59:46 | gokr | Ok, gotta make ginger breads now... |
17:04:59 | * | nullmove joined #nimrod |
17:06:37 | * | dom96_ quit (Ping timeout: 246 seconds) |
17:11:27 | * | kapil__ quit (Quit: Connection closed for inactivity) |
17:14:44 | * | BitPuffin quit (Remote host closed the connection) |
17:15:43 | * | Varriount|Busy quit (Ping timeout: 246 seconds) |
17:20:52 | * | superfunc_ joined #nimrod |
17:21:37 | * | khmm quit (Ping timeout: 240 seconds) |
17:22:08 | * | kniteli joined #nimrod |
17:25:18 | * | milosn quit (Quit: Lost terminal) |
17:28:16 | * | BitPuffin joined #nimrod |
17:37:57 | * | Trustable1 joined #nimrod |
17:40:34 | * | Trustable quit (Ping timeout: 258 seconds) |
17:48:06 | * | q66 joined #nimrod |
17:49:30 | * | nullmove quit (Quit: Leaving) |
17:54:23 | * | milosn joined #nimrod |
17:54:24 | * | Varriount|Busy joined #nimrod |
18:00:09 | Varriount|Busy | The one thing I dislike about the new forum layout is the position of the login and search box. It takes up an entire column's worth of space. |
18:00:45 | EXetoC | yeah |
18:05:48 | Araq | I still think the "users" columns is completely unnecessary |
18:06:32 | Araq | also somebody should finally implement "password reset" |
18:06:50 | EXetoC | actually, it doesn't bother me, but the search field is too small when the browser window is less than 1000 pixels wide |
18:07:06 | Araq | though it's amusing how many people cannot remember their password |
18:07:08 | * | Matthias247 joined #nimrod |
18:07:10 | EXetoC | there's a lot of padding there |
18:07:18 | Araq | it's like they never used the internet :P |
18:24:56 | * | BitPuffin quit (Ping timeout: 264 seconds) |
18:33:05 | * | BlaXpirit joined #nimrod |
18:44:43 | * | dts|pokeball joined #nimrod |
18:47:19 | * | superfunc quit (Quit: Connection closed for inactivity) |
18:53:00 | * | q66 quit (Remote host closed the connection) |
18:59:13 | * | dom96_ joined #nimrod |
18:59:30 | * | AMorpork is now known as AFKMorpork |
19:00:46 | gokr | Araq: You saw? https://github.com/Araq/Nimrod/issues/1352 |
19:01:06 | gokr | I did grep my way around in the compiler code - but... ;) |
19:02:51 | * | q66 joined #nimrod |
19:04:26 | * | yeye123 joined #nimrod |
19:30:38 | Araq | gokr: happy now? |
19:30:56 | Araq | made it a showstopper bug |
19:31:45 | gokr_ | :) |
19:32:14 | dts|pokeball | i found a errr bug for lack of a better word last night |
19:32:33 | Araq | dts|pokeball: you didn't. it's fixed already. |
19:32:50 | Araq | you guys need to learn what "devel" means |
19:32:53 | dts|pokeball | with printing sequences? |
19:32:56 | Araq | yes. |
19:33:00 | dts|pokeball | hih |
19:33:02 | dts|pokeball | **huh |
19:33:14 | dts|pokeball | never mind then |
19:37:30 | Araq | gokr btw the priorities are there to give me an order to stick to |
19:38:01 | Araq | "medium priority" doesn't mean that's not a valid issue |
19:39:00 | Araq | but I can't make any bug "high priority" |
19:39:04 | Araq | it then loses its meaning |
19:45:03 | gokr_ | sure i get it |
19:45:50 | yeye123 | I need "return" several results of different type from a proc, i read the tutorial that i can use either var parameters or return tuple, is it any practical difference? |
19:45:56 | gokr_ | Just felt having inheritance not working ... was a fairly high prio thing. |
19:47:24 | Varriount|Busy | yeye123: A tuple is more idiomatic, but comes with a higher overhead (you have to allocate memory for the tuple) |
19:47:35 | * | xtagon joined #nimrod |
19:47:54 | Varriount|Busy | Var parameters are typically used when you need to mutate a parameter. |
19:48:33 | Varriount|Busy | I'd suggest using a tuple first. |
19:48:33 | Araq | Varriount|Busy: allocation for the tuple is actually free, but things can get expensive when the tuple has lots of string/seq fields |
19:48:58 | Varriount|Busy | Araq: Is a tuple a value type, or a ref type? |
19:49:06 | Araq | a value type |
19:51:39 | * | Varriount|Busy quit (Quit: Page closed) |
19:52:06 | yeye123 | thanks guys, so its no big difference i guess then but is more nimrod-like if that is what you mean by idiomatic |
19:52:16 | yeye123 | *tuple |
19:52:22 | Araq | nimiomatic |
19:52:54 | yeye123 | oh yes nim-o-matic ;) |
19:54:29 | yeye123 | why would you say its more nimomatic, just curious, it seems to me that tuples/var parameters achieves the same? |
19:56:12 | * | AFKMorpork is now known as AMorpork |
19:59:34 | Araq | tuples produce a nicer api, for speed 'var' often is preferred |
19:59:56 | Araq | in fact, once I find the time to write a book *cough* |
20:00:18 | Araq | I shall explain to you guys why functions are fundamentally flawed for high performance computing |
20:00:44 | Araq | "function" here meaning "proc with return type" |
20:01:19 | yeye123 | ok, thanks ,looking forward to the book :) |
20:02:10 | Araq | possible title: "everything that you think you know is wrong" |
20:02:42 | Araq | ;- |
20:02:57 | yeye123 | would buy |
20:04:25 | Araq | hrm 10 people buying my book a 50€ .... |
20:06:33 | * | Araq will be rich |
20:10:12 | dts|pokeball | what databases work well with nim? |
20:10:25 | Araq | sqlite, postgre, mysql, mongo |
20:10:30 | dts|pokeball | ty |
20:18:55 | Araq | hey, dyu is back |
20:18:59 | Araq | welcome! |
20:19:05 | dyu | hey Araq! |
20:19:28 | dyu | I hear you're releasing 1.0 by the end of the month? |
20:19:41 | Araq | *cough* people are against it |
20:20:00 | Araq | but I think we should do it |
20:20:12 | Araq | "release candidate 1" or something |
20:20:13 | * | bjz quit (Read error: Connection reset by peer) |
20:20:19 | dyu | rc1 sounds good |
20:20:30 | * | bjz joined #nimrod |
20:20:42 | Araq | well the number of open bugs still is depressing :-/ |
20:21:06 | Araq | on the other hand, it's pretty accurate, I think. most new bugs are duplicates |
20:21:27 | dyu | yea well ... creating a programming language is hard, especially for mostly one person :-) |
20:21:49 | dyu | what happend to the other guy that implemented type classes |
20:22:05 | Araq | he is earning too much money now |
20:22:21 | Araq | but uses it in production |
20:22:27 | dyu | wow nice |
20:22:47 | dyu | he found new work? |
20:22:53 | Araq | yes |
20:24:01 | dyu | Arawq: btw, when using {.thread.} pragma, do I have to setup something on the thread for it to work? (thread is not created by nimrod) |
20:24:21 | Araq | oooh, don't do that |
20:24:36 | dyu | yea I tried doing that and got segfault |
20:24:39 | Araq | but if you have to, don't let the .thread proc allocate GC'ed memory |
20:25:34 | Araq | well |
20:25:45 | Araq | you can try to call setStackBottom I guess |
20:25:47 | dyu | can it be easily modified to use a gc collector from threadlocal? |
20:26:00 | Araq | the gc collector is threadlocal |
20:26:13 | Araq | but the thread needs to setup its gc properly |
20:26:28 | dyu | yea, that part ... how do I set it up? |
20:26:52 | * | repax joined #nimrod |
20:26:59 | dyu | I'm trying to use nim with lwan (http server) and the io threads is setup by the latter |
20:27:52 | * | nande joined #nimrod |
20:28:52 | dyu | worker threads* |
20:29:14 | Araq | meh just use our http server instead :P |
20:29:24 | dyu | I've already got it to work |
20:29:41 | Araq | well but if you want to do that |
20:29:43 | Araq | let's see |
20:29:49 | dyu | and it gives us golang's coroutines ... in c-land |
20:29:54 | Araq | don't use --threadVarEmulation |
20:30:08 | EXetoC | dts|pokeball: mongo does work well, assuming that you're fine with using actual bindings (no high level interface) |
20:30:09 | dyu | 370k reqs/sec on my laptop |
20:30:13 | dyu | beats nginx :-) |
20:30:30 | dyu | and i've been using nginx for a few years now |
20:30:44 | Araq | so? nginx likely has more security stuff |
20:30:47 | dyu | though its not as robust :/ |
20:30:49 | dyu | yea |
20:30:54 | dts|pokeball | EXetoC, i think im gonna go with sqlite just because i dont need anything terribly big |
20:31:14 | dyu | Araq: its useful if its hidden by google's/amazon's loadbalancer |
20:31:35 | Araq | dts|pokeball: our forum runs on sqlite. it's a decent choice if you grow tired of managing postgre |
20:31:52 | Araq | and I always considered mysql a joke, so it was never even considered |
20:32:08 | Araq | but I think today it's reasonable too |
20:32:27 | dts|pokeball | yeah ive used it before with c++ and liked it |
20:34:24 | dts|pokeball | is the best way for call backs in nim is to just have a seq of the functions? |
20:35:04 | Araq | depends on what you mean. |
20:35:25 | Araq | and it depends on your use case. I consider a 'seq' of "listeners" a design smell :P |
20:36:14 | dts|pokeball | im writing an irc bot in nim, and when it recieves like PING for example i want it to use a function pong() |
20:37:07 | Araq | you can use a table of procs then yeah |
20:37:22 | Araq | or simply a 'case' statement |
20:37:38 | dts|pokeball | yeah good point |
20:37:57 | dyu | Araq: invalid command line option: '--threadVarEmulation' |
20:38:07 | Araq | dyu: don't use it! |
20:38:29 | Araq | but I think --tlsEmuation:on |
20:38:31 | dyu | by it, you mean the flag? or the .thead pragma? |
20:38:44 | Araq | the .thread pragma is fine |
20:39:15 | Araq | dyu: well for it to work I need to expose a new API, are you on devel? |
20:39:17 | dyu | --tlsEmuation:on - got same error |
20:39:19 | dts|pokeball | Araq, do you still know a lot about how the current nim compiler works? |
20:39:21 | dyu | yes I'm on devel |
20:39:44 | Araq | dts|pokeball: I still know everything. |
20:40:23 | * | starless joined #nimrod |
20:40:33 | dts|pokeball | ok, then in c++ it is generally better to use if chains than switch-case as it generates better asm. does this rule apply to nim as well? |
20:40:45 | yeye123 | can i use slices or sets to interpret a bit in an int as a bool, i want to achieve for examble: mybool = (myInt1.b1 == myint2.b0) |
20:40:47 | * | gour quit (Quit: Konversation terminated!) |
20:41:44 | Araq | yeye123: no, but it's only a template `{}`(a, i): expr = a and (1 shl i) != 0 away |
20:41:56 | * | flaviu joined #nimrod |
20:42:06 | Araq | myInt{b1} == myint{b0} |
20:42:34 | dyu | Araq: how would setStackBottom solve the problem? (I traced it the other day and TMemRegion's root was nil) |
20:43:09 | Araq | dts|pokeball: er no? switch-case generates good code, Nim allows you to use .computedGoto or .linearScanEnd to influence the codegen further |
20:43:24 | dts|pokeball | awesome ty |
20:43:27 | yeye123 | ok, i havent read up on the templates yet, just tinkering, but i i understand you correctly templating in nimrod means adding new functionality to the language? |
20:43:34 | Araq | though for string cases it already generates a near perfect hash table under the hood |
20:44:38 | Araq | yeye123: no, a template is a simple quasi-quote. that's only "adding new feature to the language" when you have no idea about formal semantics and just repeat "internet wisdom" |
20:44:59 | dyu | Araq: btw, what kind of production nim app was zach running? |
20:45:19 | Araq | I'm not sure I'm allowed to tell |
20:46:48 | dyu | ok |
20:51:52 | yeye123 | ok, thanks araq, i'll read a bit before i ask anymore about this :) I have a interest for low level programming asm and the like, just checking out the possibilities |
20:55:32 | * | Var|Mobile quit (Read error: Connection reset by peer) |
20:57:34 | * | Matthias247 quit (Quit: Matthias247) |
21:02:19 | Araq | dyu: exactly, I'm working on a patch for you for this very reason. |
21:04:55 | dyu | Araq: thanks!! |
21:06:34 | * | yeye123 quit (Quit: Leaving) |
21:11:41 | * | yglukhov___ joined #nimrod |
21:13:54 | * | yglukhov___ quit (Read error: Connection reset by peer) |
21:14:12 | * | yglukhov___ joined #nimrod |
21:16:26 | * | dts|pokeball quit (Quit: Leaving) |
21:16:45 | * | dts|pokeball joined #nimrod |
21:21:45 | * | matkuki joined #nimrod |
21:23:31 | * | bjz quit (Ping timeout: 255 seconds) |
21:26:42 | matkuki | Is the renaming from Nimrod to Nim official? |
21:27:05 | Araq | what does our website say? |
21:29:45 | matkuki | So it's Nim then. |
21:29:50 | matkuki | Just making sure, before I change all my editor lexer comments and namings. |
21:30:02 | Araq | yay |
21:30:21 | * | dyu quit (Quit: Leaving) |
21:30:57 | * | Sembei joined #nimrod |
21:31:34 | * | quasinoxen quit (Ping timeout: 244 seconds) |
21:31:55 | * | Mat4 joined #nimrod |
21:32:04 | Mat4 | hi all |
21:32:51 | * | quasinoxen joined #nimrod |
21:37:30 | Araq | weißt du nicht, wer seine Seele an die Hölle verkauft, wird immer jung sein, schön und schlank und mit flachem Bauch und ich weiß, das willst du auch. |
21:38:00 | BlaXpirit | what's the point of keeping different domains separate? |
21:38:08 | BlaXpirit | i think it would be much better to redirect from http://nimrod-lang.org/ |
21:38:35 | repax | and from #nimrod to #nim |
21:38:40 | BlaXpirit | yeah..... |
21:38:46 | BlaXpirit | also: click on nim logo on main page |
21:38:49 | Araq | well yeah, we're working on it |
21:39:01 | Mat4 | Araq: Und ist es auch Wahnsinn, so hat es doch Methode |
21:39:04 | Araq | btw there still has not been a single official 'nim' release |
21:39:11 | Araq | Mat4: lol |
21:39:32 | Araq | doesn't count though. |
21:39:47 | Araq | only lyrics from special bands are allowed |
21:40:11 | * | Matthias247 joined #nimrod |
21:40:29 | repax | Ich bin ein Schmetterling |
21:40:38 | dts|pokeball | does nim have sum types? |
21:41:22 | Araq | dts|pokeball: 'case objects' do count as such |
21:41:43 | Araq | and yes, I do know they are different from ML |
21:41:57 | Araq | and yes, I don't care whether you believe me, that was a concious design choice |
21:41:58 | repax | How about untagged unions? |
21:42:10 | Araq | use the .union pragma |
21:42:22 | repax | I see, thanks |
21:43:58 | matkuki | What is the difference between using "method MyMethod(mt: MyType, ...)" and "proc MyProc(mt: MyType, ...)"? |
21:44:09 | dts|pokeball | Araq, i dont know what sum types were, so im not arguing. someone was asking about nim |
21:45:14 | Araq | dts|pokeball: http://forum.nim-lang.org/t/597#3239 |
21:45:27 | Araq | hrm the forum search really IS nice |
21:47:04 | Araq | repax: are you German? |
21:47:59 | flaviu | matkuki: method means that it dispatches on the runtime type, while proc means static dispatch |
21:48:37 | repax | Araq, not the sligthest |
21:48:47 | flaviu | matkuki: http://nimrod-lang.org/manual.html#multi-methods , http://nimrod-by-example.github.io/oop/ |
21:48:47 | matkuki | flaviu: thanks |
21:49:28 | Araq | repax: but you're a butterfly! |
21:49:52 | repax | only on mondays and thursdays.. :/ |
21:54:11 | Araq | and on other days you're an ordinary knife? |
21:55:00 | repax | story of my life.. |
21:56:58 | * | nande quit (Remote host closed the connection) |
21:57:08 | Araq | Mat4: got panicoverride to work? |
21:57:21 | Mat4 | yes |
21:57:30 | Araq | what do you think of it? |
21:58:02 | repax | panic override is awfully cool sounding |
21:58:27 | Araq | repax: it's only necessary when you write your own OS ;-) |
21:58:52 | repax | Oh |
21:58:53 | Araq | as somewhere these "index ouf of bounds" messages need to go |
21:59:09 | * | irrequietus quit () |
21:59:24 | repax | Of course |
21:59:41 | Mat4 | Araq: for OS development it is only a small addition for code you want to implement anyway so it is OK |
22:00:19 | repax | If you make a new OS please not one more Unix |
22:00:21 | Araq | Mat4: well as I said, somewhere runtime fatal errors need to go, otherwise we don't improve over C |
22:00:37 | repax | Go for something entirely new and wild |
22:01:21 | Araq | ah, somebody reads my newsletter |
22:01:33 | Araq | repax: exactly what I'm saying for years now. |
22:01:58 | Mat4 | someone want to work toward an efficient exokernel ? |
22:02:07 | repax | you're so right Araq |
22:02:35 | repax | Mat4, if I had the time |
22:03:35 | Araq | repax: I was excited about Haiku until I installed it and saw the directory hierarchy and bash scripts everywhere |
22:03:58 | repax | I truly hate human-readable formats |
22:04:18 | repax | bash is too clumsy |
22:04:43 | Araq | lol what? |
22:04:49 | Triplefox | i feel like "human-readable" is kind of an illusion |
22:04:51 | Araq | are you messing with me? |
22:05:06 | repax | Not messing |
22:05:13 | Varriount | bash != human-readable |
22:05:35 | Triplefox | like, people exist who can read untranslated machine code for some architecture |
22:05:36 | * | dts|pokeball quit (Read error: Connection reset by peer) |
22:05:42 | repax | It started as a simple tool but complexity grew and got out of hand |
22:06:04 | repax | It is so misused today |
22:06:13 | Araq | there is a difference between human-readable and using the fucking colon as a separator |
22:06:21 | Araq | key: value # makes some sense |
22:06:29 | Araq | fileA:fileB:fileC # wtf? |
22:07:09 | Araq | and that's just an irrelevant nitpick |
22:07:24 | * | dts|pokeball joined #nimrod |
22:07:32 | Mat4 | repax: BeOS userland is POSIX oriented. Compare this with DCL (VMS) |
22:07:44 | * | willwillson joined #nimrod |
22:08:01 | Araq | it gets worse with /urs /usr/local, /bin /sbin, /opt ... |
22:08:26 | repax | Mat4, sorry not familiar with dcl |
22:09:03 | repax | Araq, yeah that's a mess |
22:10:20 | repax | Also, xwindows with its network thingy, running as root. |
22:10:49 | Araq | in practice you have to be root to be able to install anything |
22:11:34 | Varriount | Oh, that reminds me. I have some ammunition to give araq wrt windows over linux. |
22:11:53 | Araq | not that it matters, most valuable stuff is in ~ anyway which has zero protection |
22:12:06 | Mat4 | repax: DCL is the command shell of VMS and derivates, take a look at the wikipedia page about it |
22:12:07 | repax | indeed |
22:12:16 | Varriount | Araq: Did you know that Window's supports transacted series of file operations? |
22:12:52 | * | nande joined #nimrod |
22:13:39 | repax | Mat4, uhm. Do you like DCL? |
22:15:18 | Mat4 | yes, it's a nice albeit somewhat unreadable shell environment |
22:16:51 | repax | However, an exokernel has less need for a shell environment |
22:17:03 | flaviu | I've moved nim-by-example to the new name, unfortunately I don't think I can set up a redirect. I hope people haven't linked to it too much ;) |
22:17:11 | Mat4 | repax: indeed |
22:18:07 | repax | deep links would be troublesome |
22:18:53 | repax | That is unless you use a frontend controller page |
22:22:10 | repax | Mat4, so let's see here. An exokernel implemented in nim? Pre-compiled or as an open source library for interfacing with nim programs? Is that what you are working on? |
22:23:06 | Mat4 | I'm working on a native-code environment which can be used as backend for the Nim compiler |
22:23:12 | Araq | Varriount: no, but it doesn't matter since <insert_popular_unix_zealot_here> came up with reasons why they are a) not necessary b) a security problem c) buggy for some corner case |
22:24:22 | dom96_ | flaviu: Can't you create a repo called 'nimrod-by-example' with a little link? |
22:24:36 | Mat4 | this environment can work as kernel however |
22:24:55 | flaviu | dom96_: I'd probably have to create a new organization, and I don't really have time for that atm |
22:24:57 | repax | Mat4, sounds very interesting. |
22:26:11 | repax | Mat4, what would be great for running specialised cluster nodes and also embedded programs |
22:28:04 | repax | *that would be great |
22:28:24 | dts|pokeball | is it possible to overload operator $ for seq's and make it use that instead of the normal $ |
22:29:46 | dts|pokeball | actually, i guess i could make a whole new operator |
22:30:27 | Araq | dts|pokeball: it's possible if you're careful but unlikely to be a good idea |
22:30:28 | Mat4 | repax: yes. However, efficient node sheduling is not easy approachable |
22:30:49 | Mat4 | ^approacheable |
22:31:37 | repax | Mat4, of course it depends on the purpose of the cluster. |
22:32:08 | * | perturbation joined #nimrod |
22:32:27 | Araq | perturbation! |
22:32:33 | Araq | thanks for updating the lexer |
22:32:53 | dts|pokeball | actually, before i go through the process of writing a new operator, is it possible to do this already? lets say i have var some_seq: seq[string] = @["foo", "bar", "baz"], and then print some_seq[1 .. 2], so that it looks like this: "barbaz", instead of @["bar", "baz"] |
22:33:16 | perturbation | np Araq |
22:33:38 | repax | dts|pokeball, "repr"? |
22:33:58 | dts|pokeball | repax, repr printed weird |
22:34:45 | Araq | repr ... the bad idea that is tremendously successful so I can't kill it |
22:35:01 | Araq | I think everybody uses it except me |
22:35:35 | * | matkuki quit (Quit: ChatZilla 0.9.91 [Firefox 34.0.5/20141126041045]) |
22:35:41 | repax | I only use it to sort out what mess I've created |
22:35:44 | Araq | dts|pokeball: join(s[1..2]) |
22:36:08 | dts|pokeball | ty |
22:38:15 | Araq | dyu: here you go, try the new system.setupForeignThreadGc |
22:39:36 | Araq | hrm my blog is really crappy. good nobody knows it |
22:40:57 | EXetoC | it.. conveys information |
22:41:03 | EXetoC | but that's not enough these days is it :p |
22:41:19 | repax | What's required these days?? |
22:42:43 | dts|pokeball | is there a way for join to do this: join(ircseq[4 .. (ircseq.len - 1)], " ") where if ircseq had @["foo", "bar", "baz", "foobaz", "foobar", "barbaz"] it would make it "foobaz foobar barbaz"? |
22:43:57 | Araq | no, "join" doesn't mean "read my mind" |
22:44:07 | Araq | it only joins for now. |
22:44:15 | dts|pokeball | hmmm. ok |
22:44:31 | repax | Tha's a major setback |
22:44:44 | EXetoC | repax: sticky menus, some javascript and pretty shadows |
22:44:52 | * | Var|Mobile joined #nimrod |
22:46:13 | Varriount | Araq: I'm testing out the new test results posting at this very moment. |
22:46:44 | Araq | Varriount: yay. |
22:46:51 | * | Araq opens another can of beer |
22:47:35 | repax | EXetoC, yeah. Somehow content got lost along the way. One probably expects one picture for every paragraph of text, also |
22:48:55 | Varriount | repax: Wait, a blog is supposed to have *content*? I thought blogs were just made up of exclamatory remarks and pictures of animals. |
22:49:06 | repax | If I drink any amount of alcohol I might as well close the text editor. No work done will be sound or even understandable the next day. |
22:49:56 | Varriount | repax: Assuming you like the taste of alcohol. |
22:50:26 | repax | Hm, that might be the problem |
22:51:02 | Araq | Varriount: consider it a medicine if you don't like the taste :P |
22:52:52 | repax | Famous and historical authors were all ardent drunkards |
22:53:06 | EXetoC | repax: you don't have a ballmer peak? that's unfortunate |
22:54:33 | repax | EXetoC, if I have one it's infinitesmimal |
22:55:21 | repax | or half of one |
22:58:24 | EXetoC | perhaps only 5cl will do |
22:58:35 | * | Jesin quit (Quit: Leaving) |
23:03:03 | dts|pokeball | http://paste.ubuntu.com/9481542/ its saying main.nim(8, 15) Error: type mismatch: got (string, string) but arent both of those strings? |
23:04:46 | Araq | dts|pokeball: 1. there is no += for strings, it's &= |
23:04:56 | dts|pokeball | /facepalm |
23:05:00 | Araq | 2. you use 'var seq' for join and that's clearly wrong |
23:05:16 | dts|pokeball | i used var just to see if that would fix it, based on the rest of the error |
23:05:26 | Araq | 3. join with separator already exists in strutils |
23:05:34 | dts|pokeball | you told me it doesnt! |
23:06:03 | dts|pokeball | also, sorry, got some bad habits from c++ |
23:06:22 | Araq | no, you described some weird joining where pairwise joins don't produce a separator or something like that |
23:06:37 | Araq | but maybe I got it wrong |
23:06:52 | dts|pokeball | i probably explained it badly |
23:07:43 | Araq | 4. split with ' ' instead " " might be slightly faster |
23:15:17 | gokr | There is a really cool tool that originated in Squeak that helps you find library methods like this by a search-by-example. |
23:15:32 | gokr | So you give it args and results - one or more examples. |
23:16:12 | gokr | And it brute force runs all matching methods to find the method you want. Its surprisingly efficient in finding stuff. |
23:17:31 | Araq | gokr: the Haskell guys claim to have something much better. a type based search |
23:17:53 | Araq | you give a type like a -> a and the tool writes the identity functions for you |
23:18:04 | Araq | *function |
23:18:14 | * | yglukhov___ quit (Quit: Be back later ...) |
23:19:09 | gokr | I am not sure I understood what you meant. |
23:19:53 | flaviu | gokr: lowercase letters are typically used for generic parameters in haskell |
23:20:26 | flaviu | so searching for `a -> a` searches for a function that takes an a and returns an a |
23:20:26 | perturbation | I've played around with Pharo and I was very impressed with the class browser and debugger. Unfortunately it's a bitch to get running in Debian stable so I have the VM in a VM... |
23:20:48 | perturbation | Haskell and Smalltalk are very cool but I just don't have enough time for all of these |
23:21:44 | gokr | I am a long time Smalltalker, use Pharo and Squeak a lot. But never got into Haskell, although I liked Darcs :) |
23:22:20 | gokr | flaviu: And... when you say a you mean a type, right? |
23:22:40 | flaviu | Yes, I mean a type, as in 1: int |
23:22:44 | gokr | So what's so cool about finding all functions that take an int and returns an int? |
23:23:10 | Araq | it doesn't *find* it. it *writes* it for you. |
23:23:23 | * | saml quit (Quit: Leaving) |
23:24:02 | gokr | Given sample inputs? |
23:24:56 | Araq | no, given the *types* |
23:25:02 | flaviu | gokr: In haskell-land, the program is closely related to the types. |
23:25:12 | Mat4 | ciao |
23:25:29 | * | Mat4 left #nimrod (#nimrod) |
23:25:36 | flaviu | Instead of using types for verification, the types correspond almost directly to the program. |
23:26:44 | gokr | So ok, how would it find all "functions" that given 27 and 3 gives 9? Do you express these as "types" somehow? |
23:27:08 | flaviu | gokr: It'd be ridiculous even by their standards, but you could. |
23:27:12 | gokr | Sidenote, Squeak 4.4 does this: MethodFinder methodFor: #( (27 3) 9) ==> '(data1 // data2) (data1 / data2) (data1 quo: data2) ' |
23:28:03 | flaviu | err, I misunderstood. I was answering "Can 27 + 3 = 9 be expressed in the type signature?" |
23:28:04 | gokr | And suddenly its not *that* ridiculous is it? ;) |
23:28:25 | gokr | No, arg1 = 27, arg2 = 3, result = 9 |
23:28:47 | Araq | dunno. all these () look perlish to me. |
23:29:09 | gokr | Araq: That's a string silly. |
23:29:49 | Araq | ugh my eyes. it's ugly. |
23:30:00 | gokr | Also, it doesn't matter if I use 27 3 or 3 27, it tests them in all orders. |
23:30:02 | * | cir0x joined #nimrod |
23:30:04 | Araq | (obviously I'm not serious) |
23:30:10 | Araq | hi cir0x welcome |
23:30:14 | gokr | I know ;) |
23:30:23 | cir0x | hi |
23:30:25 | * | Var|Mobile quit (Ping timeout: 250 seconds) |
23:30:31 | gokr | But couldn't we do "one better" with nim? |
23:30:59 | Araq | dunno. last time I checked I came up with strongSpaces to fight () but you were against it |
23:31:16 | gokr | I am not talking about () - I am talking about MethodFinder. |
23:31:58 | Araq | *shrug* MethodFinder surely is possible, but it's only useful for people who don't know everything |
23:32:09 | perturbation | How does methodfinder work without causing (potentially very bad) side effects? |
23:32:21 | gokr | Now, if you really want to talk about "()" in that oneliner I wrote. This is a nested array literal: #( (27 3) 9). The only other parens in that code is inside a string literal. |
23:32:36 | Araq | perlish!!! |
23:32:44 | perturbation | i.e., if you were looking for a proc that took TFile and returned boolean for some proc ls(TFile t): bool |
23:33:02 | perturbation | and it would evaluate also proc rm(TFile t): bool that returns true if it deletes a file? |
23:33:03 | gokr | perturbation: Its actually very simple, they just list "save methods" that it tests through. |
23:33:11 | Araq | perturbation: well Nim has this thing called .noSideEffect |
23:33:20 | gokr | But as I said Nim could do "one better" - we have both types and effects info |
23:33:33 | gokr | But Aray was so busy staring at parens he didn't catch on. |
23:33:41 | gokr | Araq. |
23:33:59 | Araq | hey, you annoyed me, and now you get it back |
23:34:07 | gokr | perturbation: I meant "safe methods", not save. |
23:34:11 | gokr | Ha! |
23:34:15 | perturbation | gotcha - interesting |
23:34:34 | gokr | Come on, you can't seriously think that code you pasted the other day was somehow "beautiful"? |
23:34:48 | repax | I wonder how useful that really is in practice, though.. |
23:34:57 | Araq | well 'cast' has been designed to look ugly |
23:35:08 | gokr | Hehe, good point. Touché. |
23:35:09 | Araq | apart from that it's perfectly consistent |
23:35:20 | Araq | and reads from left to right |
23:36:05 | Araq | and if that's already ugly for you ... I suggest you never look at fowl's code |
23:36:10 | EXetoC | or vice versa depending on how you word it |
23:36:33 | gokr | Well, as an outsider - it did look... pretty.. Perlish. I wasn't actually trying to parse it carefully - it was just an initial feeling. |
23:36:48 | Araq | Nim has not really been designed to prevent ugly code |
23:36:55 | Araq | it doesn't encourage it either though |
23:36:59 | gokr | repax: It turns out, the richer your stdlibs get - the more useful it can be. |
23:39:40 | repax | gokr, does it compose functions as well? |
23:39:54 | * | marketbot joined #nimrod |
23:40:03 | dts|pokeball | guys!! i wrote a bot in nim |
23:40:06 | gokr | repax: Not sure what you mean. |
23:40:08 | dts|pokeball | ,echo Hello, world! |
23:40:08 | marketbot | hello, world! |
23:40:26 | flaviu | ,echo ,echo marketbot |
23:40:26 | marketbot | ,echo marketbot |
23:40:30 | Araq | ,echo your mother .... ! |
23:40:30 | marketbot | your mother .... ! |
23:40:37 | Araq | hey! |
23:40:46 | gokr | Ban him! |
23:40:52 | dts|pokeball | heh |
23:40:53 | Araq | yeah I should |
23:40:56 | repax | gokr, does it return a single function that matches the example, or does it also try to combine functions? |
23:41:05 | gokr | The former |
23:41:35 | * | Var|Mobile joined #nimrod |
23:41:39 | gokr | repax: It was just a rather trivial tool that's easy to do in Smalltalk since you have "full reflection". |
23:41:39 | dts|pokeball | ,part #nimrod |
23:41:39 | * | marketbot left #nimrod (#nimrod) |
23:41:46 | flaviu | dts|pokeball: You'll have to invite another bot. I can't abuse just a single bot! |
23:42:06 | dts|pokeball | flaviu, ill get my friend to bring his in when he joins |
23:42:09 | flaviu | !lastseen ,echo |
23:42:30 | flaviu | !seen ,echo |
23:42:30 | NimBot_ | I have not seen ,echo |
23:42:36 | * | Trustable1 quit (Quit: Leaving) |
23:42:39 | flaviu | \nick ,echo |
23:42:45 | Araq | see? that's the problem right here. The Haskell guys have a tool that tries all combinations and then writes a program to predict stock developments |
23:42:55 | Araq | and now everybody that uses Haskell is rich |
23:43:21 | EXetoC | ,echo |
23:43:29 | EXetoC | oh |
23:43:34 | Araq | it also created the first working fusion reactor |
23:43:51 | gokr | repax: I just think its worth trying to pursue more advanced tooling, and not just language features :) |
23:43:53 | repax | Knew i should have learned haskell instead of ... |
23:43:59 | perturbation | what put me off working with Haskell/Elm is that cabal always seemed to be breaking stuff every 5 minutes |
23:44:19 | repax | gokr, sure. I'm not against the idea |
23:44:37 | perturbation | but then I think that was before I discovered sandboxes |
23:44:53 | gokr | But that's just the "Smalltalker" in me talking. The beauty of Smalltalk is at least 50% in the tooling. |
23:45:53 | dts|pokeball | how would i install sqlite for nim? |
23:45:57 | repax | As for nim, a ast-manipulation library is where the gold is |
23:46:27 | Araq | you mean one like macros.nim already provides? |
23:46:46 | repax | I mean like refactoring and such over codebases |
23:47:04 | Araq | well the parser is in parser.nim, you know |
23:47:23 | Araq | and nimfix can do some renamings already |
23:47:31 | repax | It has great strenghts |
23:47:35 | gokr | The AST contains everything, right? Including comments? |
23:47:46 | Araq | gokr: not anymore. |
23:48:14 | Araq | we found it too hard to work with. that said, nimfix keeps the code as is including comments. |
23:48:46 | gokr | But I would "lose" if I go to AST, restructure, try to generate source, right? |
23:49:47 | repax | Suppose I'd want to write a IDE that worked on an AST model directly instead of source code TEXT, interfacing with a nim AST-library |
23:50:03 | gokr | Got this annoying itch write a Nim "IDE" in Smalltalk. ;) |
23:50:06 | Araq | gokr: yes, unless you do it how nimfix does it |
23:50:18 | gokr | It keeps track of intervals of comments etc? |
23:50:50 | Araq | no, it just uses the original line info in every AST node |
23:50:57 | Araq | but the result is the same |
23:51:50 | Araq | repax: as i said, been there, tried that. |
23:52:03 | Araq | doesn't work out too well |
23:52:29 | * | Jesin joined #nimrod |
23:52:36 | gokr | Care to elaborate? |
23:52:39 | Araq | I mean it starts with string literals: |
23:52:45 | repax | I'm sufficiently naive to not believe that |
23:52:52 | Araq | "foo\10" |
23:52:58 | Araq | is that "foo\n"? |
23:53:02 | cir0x | What am I doing wrong? http://hastebin.com/cemuropidi.apache |
23:53:09 | flaviu | Araq: Yes. |
23:53:17 | Araq | on unix perhaps, on windows not. |
23:53:46 | Araq | so ... you must not translate escape sequences in string literals or you lose information |
23:53:55 | Araq | that might be relevant for the programmer |
23:54:17 | Araq | especially if the code really uses strings to encode x86 instructions, for instance |
23:54:47 | flaviu | Araq: Nim is odd in making '\n' platform dependent, everyone else just does \10. |
23:55:09 | Araq | flaviu: that doesn't take away anything from my point |
23:55:12 | flaviu | Araq: In that case, laugh at the programmer because he really should have thought it through. |
23:55:37 | flaviu | But anyway: string literals are tokenized separately from newlines. |
23:55:38 | repax | Yes, fck the programmer |
23:55:49 | Araq | flaviu: everyone else also pays the price for binary vs text file modes |
23:56:05 | Araq | which is a non-issue for Nim as a result |
23:56:40 | Araq | and then it goes on with integer literals |
23:56:52 | Araq | 0xff is that 255? |
23:57:03 | flaviu | You know it is. |
23:57:15 | Araq | is 0xDEADBEEF the same as its decimal representation? |
23:57:24 | fowl | write a template so you could do obj.castTo(int) |
23:57:29 | Araq | how does the AST renderer know? |
23:57:31 | fowl | if cast is ugly to you |
23:57:36 | gokr | Why the obsession of skipping source? |
23:57:38 | fowl | anybody |
23:58:30 | repax | gokr, to do proper auto inserts and refactorings |
23:58:34 | Araq | gokr: my point is that the AST really needs to be very carefully constructed in order to not lose information that's important to the programmer |
23:59:00 | Araq | and at one point you say "screw this, just modify the original buffer instead" |
23:59:04 | gokr | Yes, I understand. I was merely wondering why repax wants to get rid of source completely. |
23:59:30 | Araq | even 1 whitespace line vs 2 whitespace lines might convey some meaning |
23:59:30 | gokr | Smalltalk has both. |