00:00:05 | BitPuffin | Varriount: well my point was that abusing exceptions anywhere will make things slower |
00:00:22 | Varriount | Araq: How should the CreateSymbolicLink not be imported? |
00:02:21 | Araq | Varriount: not sure. quickest way out: add some .deadCodeElim:on |
00:02:46 | Varriount | Araq: Why isn't that on by default? |
00:03:12 | Araq | cause it's an optimization |
00:06:33 | Araq | good night (this time for real) |
00:07:20 | fowl | the annoying thing about c is some functions return 0 for "good" and some use 0/1 like bool |
00:10:53 | flaviu1 | With rust's Result (actually Either), you choose the type of your Left, so you can be as descriptive as you want |
00:11:42 | * | Matthias247 quit (Read error: Connection reset by peer) |
00:11:55 | fowl | you can implement adts in nimrod too, its just a little more wordy |
00:12:39 | flaviu1 | Yeah, but it isn't considered idiomatic. Also, it isn't more wordy if you don't want it to be. |
00:12:40 | fowl | https://gist.github.com/fowlmouth/c14544fccde769bd61aa#file-ent_packets-nim-L19 |
00:12:57 | fowl | its wordier than haskell |
00:13:13 | flaviu1 | Write a package for ADT pattern matching |
00:13:24 | flaviu1 | I wrote half of one, before getting stuck on a bug |
00:13:46 | fowl | im waiting for compiletime type introspection |
00:13:57 | flaviu1 | fowl: Nimrod has RTTI |
00:14:13 | fowl | im not interested in that |
00:14:34 | flaviu1 | What do you want to do? |
00:14:54 | fowl | use it at compiletime, like i said |
00:15:18 | flaviu1 | Oh, I misread |
00:15:42 | flaviu1 | Isn't there compile time type information? |
00:15:49 | flaviu1 | The compiler has access to it |
00:15:57 | fowl | no |
00:16:06 | fowl | theres no api to access it |
00:18:27 | Varriount | fowl: typetraits? |
00:19:48 | fowl | no? |
00:20:27 | Varriount | fowl: What kind of type information do you need? |
00:24:16 | fowl | to see the structure of a type |
00:25:05 | Varriount | fowl: Have you asked Araq how to go about implementing such a thing? |
00:27:08 | flaviu1 | Syntax highlighting is a huge pain |
00:27:55 | flaviu1 | Even after everything gets put in the correct path, I still have no idea why it doesn't work |
00:28:10 | Varriount | flaviu1: Yep. Especially since all the editors I've seen use regex as the primary parsing method. |
00:29:40 | fowl | Varriount, no, i cant make such a commitment |
00:30:17 | flaviu1 | No, the syntax highlighter works fine. Getting it to be recognized doesn't, I think ruby has some sort of compilation cache somewhere |
00:38:34 | flaviu1 | It looks like it was quietly falling back to other syntax highlighers and not telling me. Very helpful /s |
00:51:21 | * | brson quit (Quit: leaving) |
00:51:33 | * | bjz quit (Ping timeout: 245 seconds) |
00:52:55 | * | bjz joined #nimrod |
00:57:58 | * | brson joined #nimrod |
00:59:28 | * | OrionPK quit (Remote host closed the connection) |
01:00:19 | * | EXetoC quit (Ping timeout: 260 seconds) |
01:05:34 | * | EXetoC joined #nimrod |
01:09:10 | flaviu1 | Minor hacks later, it looks great and syntax highlighting works |
01:32:14 | * | Joe_knock joined #nimrod |
01:32:52 | Joe_knock | anybody awake? |
01:46:21 | flaviu1 | Yes |
01:46:54 | Joe_knock | I'm getting this error: lib/system.nim(2721, 5) Error: implementation of 'system.rand(max: int): int' expected |
01:47:06 | Joe_knock | Ubuntu12.04 |
01:47:46 | flaviu1 | Someone else had the same issue a while ago |
01:47:52 | flaviu1 | Maybe I can find the logs |
01:48:41 | * | Klaufir joined #nimrod |
01:48:47 | Klaufir | why is (1 or 2) == 3 ? |
01:49:04 | flaviu1 | Joe_knock: http://build.nimrod-lang.org/irclogs/28-05-2014.html , C-f for rand |
01:49:12 | flaviu1 | Klaufir: Bitwise or |
01:49:20 | Klaufir | oh, thankyou |
01:50:05 | flaviu1 | Joe_knock: I don't really like the solution, but it should be the fastest way to get things working |
01:52:12 | Joe_knock | Araq doesn't really provide a way for "reinstalling things properly" |
01:58:05 | Klaufir | in the manual |
01:58:14 | Klaufir | there is this line for the ffi |
01:58:15 | Klaufir | proc printf(formatstr: cstring) {.importc: "printf", varargs.} |
01:58:25 | Klaufir | and I get an error when trying to compile |
01:58:45 | Klaufir | http://lpaste.net/104922 |
02:01:03 | flaviu1 | Klaufir: I can't reproduce it, can you post your full code? |
02:01:14 | Klaufir | sure |
02:02:50 | Klaufir | http://lpaste.net/104923 |
02:03:01 | Klaufir | i am just learning the language on small examples |
02:03:15 | Klaufir | now, when only the last two lines are in the file, it works perfectly |
02:03:38 | Klaufir | but with the iterator examples above, it somehow misbehaves |
02:04:37 | flaviu1 | It seems to be the `echo` |
02:05:27 | * | brson quit (Ping timeout: 252 seconds) |
02:05:53 | Klaufir | it is my fault, or the compiler's fault? |
02:06:35 | Varriount | Klaufir: Are you getting a C compiler error? |
02:06:39 | flaviu1 | If it fails in C gen, its almost always the compiler's fault |
02:06:47 | Klaufir | Varriount: yes |
02:06:56 | fowl | Klaufir, it works if i add the pragma header:"stdio.h" |
02:07:10 | flaviu1 | Varriount: having importc: "printf" fails if echo is being used |
02:07:43 | Varriount | Probably because echo uses printf |
02:07:55 | fowl | Klaufir, add that to the printf pragmas (in {. .}) |
02:08:10 | Joe_knock | it looks like ive installed nimrod, but I still get a: nimrod: command not found. Do directories matter? |
02:08:43 | fowl | Joe_knock, are you on linux |
02:08:46 | flaviu1 | Joe_knock: Is it on your path? `echo $PATH` |
02:08:49 | Klaufir | fowl: yes, thank you. it works this way |
02:09:07 | Joe_knock | fowl: yes, ubuntu 12.04 . |
02:09:17 | Joe_knock | flaviu1: I don |
02:09:24 | fowl | Joe_knock, best way to install in linux is to symlink nimrod into your $PATH |
02:09:28 | Joe_knock | I don't see that in the installation instructions |
02:09:56 | Klaufir | how can I help fix the docs? because the line (without the 'header: "stdio.h"') comes directly from the ffi docs: http://nimrod-lang.org/manual.html#foreign-function-interface |
02:10:00 | fowl | the instructions probably say to use koch install |
02:10:08 | flaviu1 | Joe_knock: Well, technically you can use it by doing `~/Downloads/nimrod/bin/nimrod c -r ./myfile` |
02:10:50 | fowl | Klaufir, you can make a pull request, https://github.com/Araq/Nimrod/blob/devel/doc/manual.txt#L5480 |
02:10:57 | Joe_knock | fowl, yes I built nimrod from source, it looks like it's installed. Can you tell me where I can find the info on the symlink? |
02:11:00 | Klaufir | fowl: thanks |
02:11:34 | fowl | Joe_knock, https://github.com/Araq/Nimrod/blob/devel/install.txt#L22 |
02:17:33 | Joe_knock | I followed the instructions and now in my usr/bin, I have a broken link to nimrod :-/ |
02:19:58 | flaviu1 | Joe_knock: I think you have to use the full path, ex /home/joe/Downloads/nimrod/.../... |
02:20:23 | fowl | flaviu1 is right |
02:20:31 | Joe_knock | that would make sense. Similar to using ECHO_PATH for other software |
02:21:01 | fowl | you can do "$(pwd)/bin/nimrod" if you're in the nimrod dir |
02:21:43 | * | q66 quit (Quit: Leaving) |
02:21:43 | flaviu1 | fowl: Thanks, I've been looking for `pwd` for a while |
02:23:44 | Joe_knock | yeah still broken with a full path. let me try pwd |
02:23:59 | flaviu1 | pwd just gives you a full path |
02:25:19 | Joe_knock | weird that the usr/bin still shows it as a broken link, yet it compiled and ran with (pwd). |
02:25:24 | fowl | Joe_knock, whats it say from ls -l /usr/bin/nimrod |
02:25:58 | fowl | Joe_knock, you need to delete it before ln will work again |
02:26:20 | Joe_knock | should I use ls -l instead of ln -s ? |
02:26:38 | fowl | Joe_knock, no, nvm that, ls -l would show you where its linked to |
02:26:52 | flaviu1 | `ls -l` lists the file information verbosely, `ln -s` makes a symbolic link |
02:27:28 | flaviu1 | you could also use `stat /usr/bin/nimrod`, that would give roughly the same information as `ls -l` |
02:28:07 | Joe_knock | it's giving the correct link to the nimrod executable. I wonder, if I just dumped the bin/nimrod file into usr/bin, would that work too? |
02:28:47 | flaviu1 | It might, not the best idea though |
02:29:07 | flaviu1 | Maybe add the nimrod bin to your path in `~/.bashrc`? |
02:29:20 | Joe_knock | I think it will possibly work. But I'm not sure what the purpose of that file is |
02:29:27 | fowl | Joe_knock, no, you need the std lib too, you should just use koch install |
02:29:37 | flaviu1 | It gets run whenever you open a terminal |
02:30:06 | Joe_knock | koch install as in: |
02:30:08 | Joe_knock | bin/nimrod c koch |
02:30:08 | Joe_knock | ./koch boot -d:release |
02:30:44 | fowl | no, sry, i meant install.sh thats mentioned by the installation instructions |
02:30:47 | Joe_knock | flaviu1: I prefer that option. I'll look into it, as I think I have that running for python too. |
02:30:58 | flaviu1 | `sudo ./koch install /usr/bin` |
02:31:20 | flaviu1 | append a slash to that, `sudo ./koch install /usr/bin/` |
02:31:22 | Joe_knock | fowl you mean install across the system? The instructions advise against that. |
02:31:35 | fowl | ok |
02:31:42 | Joe_knock | flaviu1: aah okay, I see what that would do. |
02:31:42 | flaviu1 | Yeah, the package manager might not be too happy with doing stuff like that |
02:32:03 | Joe_knock | "There are also ``install.sh`` and ``deinstall.sh`` scripts for distributing |
02:32:03 | Joe_knock | the files over the UNIX hierarchy. However, updating your Nimrod installation |
02:32:03 | Joe_knock | is more cumbersome then." |
02:32:17 | Joe_knock | aah darn, sorry about that. thought it was 1 paragraph |
02:32:37 | Joe_knock | well it is, but couldn't paste it as such |
02:33:20 | Joe_knock | Well it's installed now. I better look into things. Perhaps I should debug install stuff for linux for now. |
02:33:34 | * | brson joined #nimrod |
02:33:43 | * | brson quit (Client Quit) |
02:33:50 | * | brson joined #nimrod |
02:33:50 | * | brson quit (Client Quit) |
02:33:58 | * | brson joined #nimrod |
02:34:16 | Joe_knock | Is the nimrod channel kicking the mozilla guy out of fear for rust wars? :P |
02:36:25 | * | Joe_knock quit (Quit: Leaving) |
02:42:28 | flaviu1 | Yeah, whats going on with brson? |
02:43:54 | flaviu1 | Oh, his client seems to be bad |
02:47:25 | Klaufir | is it true that nimrod can compile to js? |
02:48:09 | flaviu1 | Klaufir: Yes, but I'm not familiar with it enough to tell you how well it works |
02:58:42 | * | kemet joined #nimrod |
03:09:41 | * | kemet quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) |
03:12:14 | * | BitPuffin quit (Ping timeout: 255 seconds) |
03:14:28 | * | def-_ joined #nimrod |
03:17:35 | * | def- quit (Ping timeout: 252 seconds) |
03:52:28 | * | brson_ joined #nimrod |
03:56:42 | * | brson quit (Ping timeout: 240 seconds) |
04:07:02 | fowl | flaviu1, this looks nice :O https://gist.github.com/fowlmouth/15b77ced45f7bbe50a7c#file-either_t-nim-L22 |
04:07:24 | flaviu1 | Wow, you started making a macro? |
04:07:34 | fowl | no its just a function |
04:11:04 | flaviu1 | Oh, I see what you're doing |
04:12:50 | * | brson_ quit (Quit: leaving) |
04:13:52 | fowl | switch is probably a better name |
04:16:09 | fowl | Right() should be typedesc,any, so Right(L,R) -> TEither[L,R] |
04:39:45 | * | Demos quit (Excess Flood) |
04:46:29 | * | Demos joined #nimrod |
05:21:58 | * | caioariede quit (Ping timeout: 245 seconds) |
06:22:19 | * | darkf_ joined #nimrod |
06:22:43 | * | darkf quit (Ping timeout: 240 seconds) |
06:22:48 | * | darkf_ is now known as darkf |
07:11:19 | * | flaviu1 quit (Ping timeout: 260 seconds) |
07:32:51 | * | hoverbear quit () |
08:21:40 | * | Demos quit (Read error: Connection reset by peer) |
08:43:04 | * | io2 joined #nimrod |
08:44:20 | * | springbok quit (Ping timeout: 255 seconds) |
08:46:36 | * | Anna_Jokela joined #nimrod |
09:00:22 | * | freezerburnv joined #nimrod |
09:00:22 | * | freezerburnv quit (Client Quit) |
09:05:48 | * | Anna_Jokela quit (Ping timeout: 240 seconds) |
09:36:22 | Araq | hi Klaufir welcome |
09:50:35 | * | Matthias247 joined #nimrod |
10:07:06 | * | kemet joined #nimrod |
10:07:16 | * | kemet quit (Remote host closed the connection) |
10:21:07 | * | q66 joined #nimrod |
10:31:32 | * | q66 quit (Ping timeout: 252 seconds) |
10:43:48 | * | q66 joined #nimrod |
10:43:48 | * | q66 quit (Changing host) |
10:43:48 | * | q66 joined #nimrod |
11:02:27 | * | kemet joined #nimrod |
11:03:05 | * | kemet quit (Client Quit) |
12:15:58 | * | untitaker quit (Ping timeout: 240 seconds) |
12:21:37 | * | untitaker joined #nimrod |
12:29:03 | * | Varriount|Mobile joined #nimrod |
12:29:41 | Varriount|Mobile | Good morning people! |
12:30:02 | Araq | hello |
12:33:42 | * | BitPuffin joined #nimrod |
13:02:26 | NimBot | Araq/Nimrod new_spawn e6d12f3 Araq [+0 ±2 -0]: fixed codegen for return values |
13:17:05 | * | q66 quit (Ping timeout: 252 seconds) |
13:25:07 | * | bjz quit (Ping timeout: 260 seconds) |
13:29:16 | * | q66 joined #nimrod |
13:29:16 | * | q66 quit (Changing host) |
13:29:16 | * | q66 joined #nimrod |
13:34:09 | * | darkf quit (Quit: Leaving) |
13:57:36 | * | flaviu1 joined #nimrod |
14:39:57 | * | Matthias247 quit (Read error: Connection reset by peer) |
14:55:12 | flaviu1 | Something like xpath might be good for macros |
14:57:39 | Varriount|Mobile | flaviu1: nPath? |
14:58:59 | flaviu1 | haha |
15:12:46 | Varriount|Mobile | seriously though, that's a good idea |
15:20:16 | * | hoverbear joined #nimrod |
15:28:08 | fowl | wheres the nimrod-by-example site |
15:28:19 | flaviu1 | fowl: https://nimrod-by-example.github.io/ |
15:28:28 | flaviu1 | 404, github messed up |
15:28:29 | fowl | 404 |
15:28:36 | flaviu1 | I sent a support request |
15:29:55 | flaviu1 | fowl: Also, your fork may be bad. I've been mostly doing force pushes |
15:30:39 | fowl | can i delete it? |
15:30:54 | flaviu1 | Sure, thats what I usually do |
15:32:55 | flaviu1 | fowl: If you want, just edit directly on the main branch |
15:43:44 | flaviu1 | Oh, my bad. I didn't check my email before sending a support reqeuest |
15:46:36 | flaviu1 | Wow, that's embarrassing |
15:49:00 | flaviu1 | fowl: It works now, and it updates instantly. I had some dead files laying around that github was trying to parse for some weird reason |
15:59:08 | * | caioariede joined #nimrod |
16:19:35 | Varriount | flaviu1: Did you do the OOP macro section? |
16:20:16 | flaviu1 | Fowl wrote it, filwit cleaned it up. I also made some modifications for clarity |
16:20:44 | Varriount | It's very well written. The comments in the macro code are especially nice. |
16:22:10 | * | Johz joined #nimrod |
16:23:09 | Varriount | Hello Johz |
16:23:23 | Johz | Hello |
16:31:18 | * | flaviu1 quit (Ping timeout: 240 seconds) |
16:48:15 | dom96 | The 'in' should really be green. |
16:48:25 | dom96 | in the syntax highlighting used in nimrod by example |
16:49:20 | * | flaviu1 joined #nimrod |
16:49:41 | dom96 | flaviu1: The 'in' keyword should be green IMO |
16:51:56 | flaviu1 | dom96: its considered an "Operator.Word", so its in a different category. `and` is also the same way |
16:52:33 | dom96 | Meh. I guess it doesn't matter that much |
16:52:57 | dom96 | And it does add a bit of style. |
16:53:24 | flaviu1 | Anyway, I'd prefer to change `of`, `ref` to bold black, but forking pygments is too much work to little outcome |
16:53:45 | flaviu1 | It'd be difficult to integrate into the build script |
16:53:52 | dom96 | why? |
16:54:15 | dom96 | These are keywords, why should they get a different color? |
16:55:10 | dom96 | In any case, hopefully tomorrow after my exams i'll add some examples. |
16:55:18 | flaviu1 | Well, it wouldn't be `pip install pygments`, it'd be something else more complicated. You're probably right on your second point though |
16:55:22 | dom96 | Good job otherwise :) |
16:56:08 | dom96 | bbl |
16:56:32 | flaviu1 | thanks. I have figured out a way to get you an ugly, 1990 throwback page |
16:57:34 | flaviu1 | if on Firefox, <Alt-v> -> Page Style -> No Style |
17:20:06 | Varriount | Anyone not able to boot nimrod devel? |
17:30:26 | flaviu1 | Varriount: Apparently it doesn't work on ubuntu, something about rand |
17:35:54 | Varriount | Araq: I'm giving up on that generic scoping bug for now. I can't seem to get a solution in place that doesn't cause errors somewhere else. |
17:47:33 | flaviu1 | I want to make sure I understand: seqs are allocated on the heap with length and capacity information. When you assign to a seq index, that index on the heap is modified. If you assign one seq to another, the pointer is copied. |
17:52:24 | * | OrionPK joined #nimrod |
17:55:37 | * | xenagi joined #nimrod |
17:57:29 | fowl | flaviu1, no, they have value semantics, a copy is made |
17:59:51 | * | xenagi quit (Client Quit) |
18:00:22 | * | xenagi joined #nimrod |
18:00:23 | flaviu1 | A copy isn't made when assigning to an index, right? |
18:01:20 | fowl | on assignment, yes |
18:01:44 | flaviu1 | like seq[1] = 2, there is no copy made? |
18:02:07 | fowl | if 2 were a string? yes it would be copied |
18:02:36 | flaviu1 | `2` is the int literal 2 |
18:03:46 | fowl | the 2 would be copied, any struct type would be copied, the value of a pointer or ref (the address, not the data) would be copied, seqs and strings have value semantics, they would get copied |
18:04:15 | fowl | unless you mark them shallow |
18:04:56 | flaviu1 | Ok, I see. The value would be copied into the seq, but the seq itself would not be copied, it would be modified. |
18:05:50 | fowl | right |
18:07:16 | flaviu1 | One last question, do strings behave identically to seqs? |
18:08:30 | fowl | flaviu1, it looks like strings are seqs under the hood |
18:09:12 | fowl | i assume that because string is casted to PGenericSeq in system.nim in the same way seqs are |
18:10:01 | flaviu1 | Ok, that's what I was thinking. Thanks, I know the questions are pretty bad, but I still hadn't understood how to think about them. Thanks. |
18:13:35 | * | Varriount|Mobile quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )) |
18:32:42 | * | xenagi quit (Quit: Leaving) |
18:34:33 | Araq | Varriount: well don't give up please, tell me the problems instead |
19:12:36 | * | bjz joined #nimrod |
19:15:58 | * | wooya joined #nimrod |
19:23:04 | * | Matthias247 joined #nimrod |
19:24:38 | Araq | hi wooya welcome (back) |
19:25:14 | * | hoverbear quit (Ping timeout: 240 seconds) |
19:27:34 | * | wooya quit (Quit: Bye) |
19:32:53 | Varriount | Araq: I've tried adding both "else: result.sons[1] = semGenericStmtSymbol(c, n.sons[1], s)" and "else: result.sons[1] = lookup(c, n.sons[1], flags, ctx)" to the end of the block on line 97 of semgnrc.nim, however neither has worked. |
19:33:53 | Varriount | Also, what is the difference between 'lookp |
19:34:08 | Varriount | *'lookup' and 'qualifiedLookup'? |
19:34:48 | * | hoverbear joined #nimrod |
19:37:27 | Araq | lookup only deals with single identifiers iirc |
19:37:36 | Araq | qualifiedLookup deals with module.foo |
19:38:35 | Varriount | Araq: What about foo.attribute? |
19:38:55 | * | reactormonk quit (Ping timeout: 260 seconds) |
19:42:12 | flaviu1 | Is there any useful result to calling inc on an enum? |
19:47:09 | Araq | Varriount: that's handled in semexprs.nim, the things that deal with nkDotExpr |
19:47:30 | Araq | which might need changes too ;-) |
19:47:39 | flaviu1 | Hmm, looping over an enum assumes that the enum is ordinal |
19:47:56 | Araq | flaviu1: yeah |
19:48:06 | Araq | enums with holes only exist for C interop |
19:52:46 | Varriount | Araq: Anyway, I'm still kinda clueless about what needs to be done. I know that symbol lookup needs to be modified somewhere along the line, but that's about it. |
19:53:15 | Araq | alright. What about the friendModule patch? |
19:54:25 | Varriount | Araq: You mean making friendmodule a seq, and pushing and popping modules off the sequence? I haven't done that yet. |
19:54:37 | Araq | yeah, that's what I'm talking about |
19:55:42 | Varriount | Does generic symbol lookup even use the friendmodule data? |
19:55:57 | Araq | no |
19:56:20 | Araq | it's likely an unrelated bug |
19:56:46 | Varriount | Araq: Why doesn't it use the friendmodule data? |
19:57:49 | Araq | because friend modules is a concept that affects generic *instantiation* |
20:03:28 | * | xenagi joined #nimrod |
20:08:14 | Varriount | Araq: I fail to see how https://github.com/Araq/Nimrod/issues/1142 *doesn't* deal with generic instantiation. |
20:09:32 | Araq | semgrnc is the pre-pass that performs symbol lookup for generics. it doesn't deal with friend modules because the prepass doesn't perform the actual instantiation. That is done later. |
20:09:36 | Varriount | After all, when nimrod is build with -d:debug, the user error given originates in the generic instantiation compiler procedures |
20:10:11 | Araq | what's -d:debug? the opposite of -d:release? |
20:10:26 | Varriount | Araq: ... You don't know? |
20:10:49 | Araq | I never use it |
20:11:07 | Araq | I use --verbosity:3 to get a stacktrace |
20:11:41 | Varriount | When the 'debug' symbol is defined, user errors thrown by the compiler (like access to private) also show a stack trace as to where they were thrown in the compiler. |
20:11:57 | Araq | interesting XD |
20:12:19 | Varriount | *access to private object attributes |
20:13:57 | Araq | oh yeah we also need a better error message |
20:14:12 | Araq | that the compiler pretends it doesn't know the field only because it's private is not nice |
20:14:14 | Varriount | For what? Access to private fields? |
20:14:19 | Araq | yes |
20:14:19 | EXetoC | Araq: but enums with holes are useful in other situations too. what are your thoughts on that? |
20:14:36 | Araq | EXetoC: use a distinct int for these |
20:16:28 | Varriount | Araq: My search must be off, because the only area I've found in the compiler that deals with friend modules (besides setting/restoring them) is in semstmts.nim, line 73, and in suggest.nim, line 67 |
20:16:35 | * | shodan45 joined #nimrod |
20:17:15 | Araq | use nimgrep -y --ext:nim friendModule compiler |
20:17:59 | Varriount | Yeah, I only get those two files. There are others, but they deal only in saving/restoring old friend modules and new friend modules. |
20:20:00 | Araq | are your sure it's semstmts and not semexprs? |
20:21:08 | Varriount | Araq: Yeah. 98% sure, anyway. |
20:21:20 | Araq | oh well |
20:22:46 | EXetoC | Araq: it seems reasonable to support enums with holes too |
20:23:12 | EXetoC | maybe I'll create an RFC some time |
20:23:40 | Araq | yeah 'inc' only needs to receive some generated table to lookup the 'next' value |
20:23:54 | Araq | piece of cake and systems programmers will love it |
20:26:53 | Varriount | So system programmers can have their cake and eat it too? |
20:27:06 | EXetoC | ok that's a bad idea |
20:28:01 | Araq | "hey guy, your enum definition sucks, but we won't tell you. we'll do some inefficient shit instead" |
20:28:20 | Varriount | " # NOTE: for access of private fields within generics from a different module |
20:28:20 | Varriount | # we set the friend module:" |
20:28:31 | EXetoC | you could prevent this using constraints I guess |
20:29:05 | EXetoC | but patching enum type iteration and enum ranges might not be so bad |
20:29:35 | Varriount | Or you could just make your own enum type, and use a macro to make the semantics similar. |
20:29:46 | Araq | we need 'enum' as a constraint and then 'realEnum' and 'shittyCEnum' |
20:30:06 | EXetoC | unless the latter supports runtime values, in which case maybe there should be something other than .. |
20:30:10 | Varriount | Wow, those names aren't biased at all! |
20:31:20 | Varriount | Araq: Which would you prefer, the use of a sentinal value, or a block? |
20:31:27 | flaviu1 | I'm actually, probably for the first time in one of these arguments, on Araq's side. |
20:31:55 | flaviu1 | As long as the manual clearly states the purpose of enums with holes |
20:33:54 | flaviu1 | Btw, there's a bug in the disjoint enum implementation. It says that `inc` isn't available in the manual, but it does work |
20:34:52 | Araq | flaviu1: guess what ... I bet it's a regression. we got generic constraints, 'inc' stopped being special cased. generic constraints checks for 'enum' ... |
20:35:02 | EXetoC | flaviu1: improving the iteration semantics and enum range semantics seem reasonable. much of it will be evaluated at compile-time after all |
20:35:44 | flaviu1 | Araq: Fair enough, I'll report it. |
20:38:01 | flaviu1 | Now that I think about it, the principle of least surprise dictates that it be impossible to iterate over a disjoint enum |
20:39:34 | Araq | flaviu1: the principle of C interop and "be useful" suggests something different though |
20:40:04 | Araq | a..b # it's fine I know every value between a and b exists |
20:40:16 | Araq | # I'm wrapping C and know what I'm doing |
20:41:18 | Araq | # I'm grateful Nimrod acknowledges C stands for Crap and yet the only way to replace it is to be damn compatible with it |
20:41:43 | flaviu1 | That should also be illegal, its misleading, but that is a hard problem |
20:42:24 | Varriount | Araq: Which issue number is the issue that concerns friend modules? |
20:45:19 | * | bjz_ joined #nimrod |
20:45:26 | Araq | Varriount: #1172 |
20:45:35 | Araq | that you closed ... |
20:45:43 | Araq | but you didn't fix the real cause |
20:46:06 | Varriount | Yes, I'm sorry. |
20:46:40 | Varriount | It's not like anyone else makes mistakes. :P |
20:47:17 | Araq | sure but you also didn't re-open it ... :P |
20:47:29 | * | bjz quit (Ping timeout: 255 seconds) |
20:47:38 | * | bjz joined #nimrod |
20:47:39 | * | bjz_ quit (Read error: Connection reset by peer) |
20:48:25 | flaviu1 | Araq: Super easy solution. `case ord(myCEnum) of ord(a)..ord(b): blah blah \n of ord(b)..ord(c) blah blah` |
20:48:59 | flaviu1 | Ugly, sure. But better than making accidental mistakes easy. |
20:49:18 | flaviu1 | if you're going to type all those ords, you know what you're doing |
20:50:11 | Araq | meh, I'd rather live with the bugs instead. with a bit of luck people will blame their internet connection for weird behaviours |
20:52:20 | flaviu1 | Is there a word that means "not well ordered"? |
20:52:38 | Araq | "with holes" |
20:52:47 | Araq | "C-like" |
20:53:20 | flaviu1 | haha, but I'm looking for something that sounds mathy :P |
20:54:05 | Varriount | flaviu1: Unclassified? Unordered? |
20:54:25 | Varriount | Or OOO (Out-Of-Order) |
20:54:38 | Araq | "ordered under some bijection" |
20:54:53 | Araq | "(which you didn't pick though)" |
20:55:22 | Varriount | Non-Optimal Positioning? |
20:56:25 | flaviu1 | I think Araq's is the most precise. Unordered leaves some ambuity |
20:56:41 | Varriount | Araq: Making the 'friendModule' a stack seems to have done the trick. |
20:59:27 | Araq | Varriount: very well. do a PR and let me review the patch |
21:00:17 | Varriount | Araq: First I must document all the procedures/variables I've touched. :3 |
21:01:01 | Araq | please no more javadoc comments :P |
21:01:57 | Varriount | Araq: To do that, I'll need some information, like, for example... |
21:02:14 | flaviu1 | Araq: Some javadocs are excellent, take http://docs.oracle.com/javase/7/docs/api/java/lang/String.html for example |
21:02:26 | Varriount | What exactly is the purpose of semAfterMacroCall? |
21:03:09 | flaviu1 | The main thing with javadoc is that Eclipse, the most common IDE (and worst), automatically generates crap comments. |
21:03:30 | Araq | "perform semantic checking after a macro call" |
21:03:31 | Varriount | Araq: And what is it supposed to do? (Besides semantically check something after a macro call) |
21:03:45 | * | Joe_knock joined #nimrod |
21:03:59 | Varriount | Araq: Is that what you want me to put as the doc-comment? |
21:04:34 | * | xenagi quit (Quit: Leaving) |
21:04:45 | Araq | no? |
21:05:05 | Araq | ## 'sem' stands for 'semantic checking'. now get over it for fuck's sake. |
21:05:17 | flaviu1 | Is the semantic checking done on the macro output or on the entire program? |
21:05:32 | Araq | that's the doc-comment for every sem* proc |
21:06:25 | Araq | flaviu1: what do you think? we re-run the semantic checking over the entire program after 1 macro expansion? |
21:06:33 | Varriount | Araq: Which is the reason why understanding the compiler is so hard. Could we at least get a summary of what semantically checking macro output involves? |
21:08:12 | Araq | well it checks the resulting AST for proper semantics. semantic checking is type checking plus checking of other things |
21:08:22 | Araq | like that you don't re-assign a 'let' variable |
21:08:44 | Araq | also unbound identifiers need to be bound |
21:10:06 | Joe_knock | shit I dont even understand that stuff yo |
21:13:21 | Araq | flaviu1: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html is as bad as any other javadoc |
21:13:41 | flaviu1 | Huh? |
21:14:26 | Araq | well "string" is a bad example really. If you don't know "string" why would you even program in Java |
21:14:28 | Varriount | Araq: Ok, now how about generateInstance, in seminst.nim? |
21:14:45 | * | Johz quit (Ping timeout: 265 seconds) |
21:14:56 | Araq | dunno ... maybe it generates an instance... |
21:16:02 | flaviu1 | Araq: Take the `public String(byte[] bytes)` constructor. Off the top of your head, what happens if you modify `bytes` after creating a new string with it? |
21:16:27 | Araq | it makes a copy |
21:17:04 | Varriount | Araq: Why must you make documentation more painful than pulling teeth? |
21:17:53 | Araq | so lets see |
21:17:58 | Araq | String(byte[] bytes) |
21:18:00 | Araq | Constructs a new String by decoding the specified array of bytes using the platform's default charset. |
21:18:12 | Araq | how does that answer your question? |
21:19:11 | flaviu1 | I'd thought I'd read copy in there somewhere but I guess not. |
21:19:22 | Araq | btw http://nimrod-lang.org/parsecsv.html has the right idea about documentation |
21:19:36 | Araq | "Example: How to use the parser" |
21:20:23 | flaviu1 | Yeah, those docs are pretty good |
21:20:42 | flaviu1 | They have a few style issues, but doesn't really matter |
21:20:55 | Varriount | Araq: What is the ID Table used for in the generateInstance procedure? |
21:21:07 | Joe_knock | flaviu1: http://flaviut.github.io/nimrod-by-example/ = 404 error |
21:21:20 | flaviu1 | Joe_knock: Yes, I know. Its moved |
21:21:27 | flaviu1 | https://nimrod-by-example.github.io/objects/ |
21:21:41 | flaviu1 | The new version updates automatically, whenever I push |
21:21:50 | Araq | some shitty type-unsafe pre-generic way to have a PType->PType or perhaps a PSym->PSym mapping, Varriount |
21:22:16 | flaviu1 | Varriount: Yeah, I have a branch laying around that cleans it up somewhat |
21:22:43 | flaviu1 | It isn't done though, I'm not completely sure about correctness |
21:23:03 | Araq | Varriount: and yes, now we're getting somewhere. This is in fact a useful comment then. |
21:23:27 | Varriount | Araq: And in the context of generics, what is it used for? Mapping a generic type parameter to a concrete type? |
21:23:39 | flaviu1 | Oh, not idents, that's a string -> something else mapping |
21:23:47 | Araq | exactly |
21:30:40 | Joe_knock | We need to start pushing out basic tutorials to get the language out to the people. Suggestions for a tutorial? |
21:31:03 | Araq | I thought we already have tutorials |
21:31:06 | Varriount | Joe_knock: Anythin Python does that me don't. |
21:31:09 | Varriount | *Anything |
21:31:15 | Varriount | *we |
21:31:17 | flaviu1 | *we :P |
21:31:59 | Joe_knock | How about something with parallel processing? I see none of those in the current tutorials. Maybe a fibonnaci counter using parallel processing. |
21:32:34 | flaviu1 | Joe_knock: If you want, send me a PR |
21:32:47 | Araq | Joe_knock: that will likely be outdated within weeks |
21:33:05 | Araq | as Nimrod got a 'parallel' statment in the new_spawn branch |
21:34:49 | * | reactormonk joined #nimrod |
21:34:56 | Joe_knock | I remember you guys saying nimrod is not ready for parallel processing yet. So maybe just some simple number programs from a C textbook might work. |
21:35:46 | Araq | well 0.9.4's spawn and sync might be good enough for that |
21:37:29 | Joe_knock | it won't help if specification changes big time after 0.9.4. And we'll first need a short tutorial explaining the use of parallel processing in nimrod by 1 of you guys. |
21:38:33 | flaviu1 | Actors are all the rage these days, why not do something with that library? |
21:38:51 | Araq | don't use them |
21:38:57 | Araq | they are ugly and slow |
21:41:01 | Varriount | Araq: https://github.com/Araq/Nimrod/pull/1240 |
21:41:31 | Matthias247 | hmm, all the rage - I think they are mainly used in scala and erlang. And both are not very mainstream |
21:42:21 | Joe_knock | Matthias247: Erlang made web news by being whatsapp-powered, so it is "mainstream" now |
21:42:24 | flaviu1 | /r/programming is all over them, so I'd say they're pretty mainstream |
21:43:09 | * | Jehan_ joined #nimrod |
21:43:09 | Matthias247 | Joe_knock: that means it powers ONE application - that's not mainstream ;) |
21:43:37 | Matthias247 | ok, it powers a lot more. But far from the java or .net dimension |
21:43:38 | Varriount | Doesn't Go follow an actors model of sorts? |
21:43:39 | flaviu1 | Wow, Scala is just below Matlab in mainstreamness |
21:44:00 | Matthias247 | Varriount: Go is CSP. It's similar, but not the same |
21:44:12 | flaviu1 | Varriount: Don't get Araq started on Go :P |
21:44:37 | Joe_knock | Matthias247: I think the value counts somewhat. something like $20 billion will motivate many to use Erlang, even if it's shit confusing |
21:45:24 | Varriount | Joe_knock: Well, just because a languag is used by a big company doesn't mean that it's very good (Look at PHP and facebook, for example) |
21:45:28 | Jehan_ | Varriount: Not according to any definition of actors that I know of. |
21:45:43 | Matthias247 | flaviu1: if /r/programming would tell the truth about used programming languages then every second program would be in Haskell ;) |
21:45:44 | Joe_knock | Varriount: Which is why we are here ;-) |
21:45:56 | flaviu1 | Matthias247: Twitter uses scala pretty much exclusivly |
21:46:39 | Varriount | "PHP: Where 0x00+2 == 4" |
21:46:44 | Joe_knock | I currently see Go and Rust as the 2 main competitors to Nimrod, but no flame wars... |
21:46:59 | * | bjz_ joined #nimrod |
21:47:17 | Araq | ah hi Jehan_. please do me a favor and run nimrod c -r tests/parallel/tpi.nim |
21:47:18 | Jehan_ | Go has its benefits. It's simple to learn, and it's one of the few statically typed languages in the world with structural subtyping. |
21:47:23 | flaviu1 | Joe_knock: Yeah, thats pretty much the way it is |
21:47:36 | Matthias247 | reddit and HN give a view on the geek world, where new and shiny counts. That's not necessarily what's used the mainstream |
21:47:37 | * | bjz quit (Write error: Connection reset by peer) |
21:47:47 | Araq | it crashes on linux and sometimes works on windows |
21:47:48 | Jehan_ | Araq: Do I have to pull a new version or checkout a different branch? |
21:47:52 | flaviu1 | Structural subtyping is very nice |
21:47:58 | Araq | the branch is new_spawn, Jehan_ |
21:48:05 | Jehan_ | Okies. Give me a minute. |
21:48:07 | Joe_knock | But nimrod seems more general purpose, whereas I've read that Go identifies as something of a language to address web-based issues mostly. |
21:48:36 | Joe_knock | I think Java and .NET are champions of the real-world, with PHP in third. |
21:48:51 | Matthias247 | don't forget C(++) ;) |
21:49:07 | fowl | Varriount, i found a problem with fsmonitor |
21:49:25 | Joe_knock | it's hard to identify C/C++, because they go well beyond consumer electronics. |
21:49:29 | Varriount | fowl: Talk to dom96, I'm not the one who wrote the original module. |
21:49:39 | Jehan_ | Go's major weaknesses are that its type system is too weak and its concurrency features too primitive. |
21:49:54 | Varriount | Jehan_: Don't forget lack of exceptions |
21:50:15 | flaviu1 | Varriount: I like lack of exceptions |
21:50:25 | Jehan_ | Varriount: I wouldn't mind lack of exceptions, except that the way they're doing it is not very good. |
21:50:37 | flaviu1 | I'm probably the only one here that does... |
21:50:46 | Jehan_ | But then, few languages have a coherent story with respect to exceptions to begin with. |
21:51:30 | Jehan_ | I'm not crazy about the C++ approach (try/catch/finally). The basic elements that you need are there, but they don't make a good programming model. |
21:51:31 | Varriount | *cough*Python*cough* |
21:51:44 | Jehan_ | Same story with Python. :0 |
21:51:50 | Matthias247 | go was designed with simplicity in mind. That's at least a valid goal (java had the same) |
21:51:50 | Jehan_ | Or Nimrod, for that matter. |
21:52:04 | fowl | can someone try this https://gist.github.com/fowlmouth/385731cf8a93aa68fda7 |
21:52:18 | fowl | Varriount, thought you were working on it, sry |
21:52:45 | Varriount | fowl: I'm working on a Windows, newasync version. |
21:52:52 | Jehan_ | Araq: Getting illegal storage access. |
21:53:21 | Araq | Jehan_: I get this: |
21:53:24 | Araq | threadpool.nim(235) slave |
21:53:26 | Araq | tpi.nim(13) termWrapper |
21:53:27 | Araq | threadpool.nim(143) nimPromiseSignal |
21:53:29 | Araq | SIGSEGV: Illegal storage access. (Attempt to read from nil?) |
21:53:55 | Jehan_ | Traceback (most recent call last) |
21:53:55 | Jehan_ | threadpool.nim(233) slave |
21:53:55 | Jehan_ | tpi.nim(13) termWrapper |
21:53:55 | Jehan_ | SIGSEGV: Illegal storage access. (Attempt to read from nil?) |
21:53:55 | Jehan_ | Traceback (most recent call last) |
21:53:55 | Jehan_ | threadpool.nim(233) slave |
21:53:56 | Jehan_ | tpi.nim(13) termWrapper |
21:53:56 | Jehan_ | SIGSEGV: Illegal storage access. (Attempt to read from nil?) |
21:53:56 | Jehan_ | Error: execution of an external program failed |
21:55:15 | Jehan_ | Varriount: The way I'm doing exceptions in my own project is that I'm borrowing from logical languages like Prolog. |
21:56:12 | Jehan_ | There are two aspects to exception handling. |
21:56:32 | Jehan_ | An exception occurs when a function is partial, not total, and is being raised where the function is undefined. |
21:57:01 | Araq | Jehan_: well it fails for me in nimPromiseSignal and what's *really* confusing, I added echos |
21:57:17 | Araq | and nimPromiseSignal echos before nimCreatePromise echos |
21:57:39 | Araq | but when I check the generated code ... I have no idea how that can ever happen |
21:57:58 | Jehan_ | Catching exception turns a partial function with result type T into a total function with result type Try[T]. |
21:58:07 | Jehan_ | Araq: Hmm. |
21:58:31 | Araq | Jehan_: this is not the whole truth :P |
21:59:12 | Araq | Try[T] is a lie too, it's more like PotentialEndlessLoop[Try[T]] |
22:00:02 | Jehan_ | Araq: Correct, but I'm trying to deal with stuff that's actually feasible. Total correctness is difficult. |
22:00:09 | Jehan_ | And, as I said, it's only part of the story. |
22:00:46 | Jehan_ | The other aspect is the rollback mechanism that you need for clean exception handling, which I like to keep separate from catching exceptions. |
22:02:08 | Joe_knock | Will you guys be putting your weight behind any web frameworks? Or will anything beyond the core language be "loosely-coupled" ? |
22:02:18 | Jehan_ | Not to mention that side effects in code that can throw exceptions is a bit of a hairy problem in general. |
22:04:26 | Araq | I'll implement my "error stack" idea in some branch. afaict it has never been tried in practice... IMO that 'raise' unwinds the stack is offensive (but very useful of course) |
22:04:36 | Jehan_ | Araq: Where's the type "Worker" defined? |
22:04:51 | Varriount | Araq: What's the current exception mechanism? |
22:05:00 | Araq | lib/pure/concurrency/threadpool.nim, Jehan_ |
22:05:03 | flaviu1 | Araq: The main flaw with the error stack is that no one will be bother to check it. |
22:05:34 | Araq | flaviu1: that's why I'll make it produce an error at program exit |
22:05:35 | Jehan_ | Araq: Found it, apparently I'm too stupid to know how to correctly search in a text editor. |
22:05:48 | flaviu1 | Varriount: Stack unwinding |
22:05:58 | Varriount | Araq: Which won't occur in long-running programs (like servers) |
22:06:04 | Jehan_ | I blame it on finally having filed my tax return and my brain still being out of sync with reality. :) |
22:06:29 | Araq | Varriount: lol that's actually a good point ... |
22:06:54 | Araq | in other words: I didn't think of it :P |
22:07:38 | Jehan_ | Araq: Are you familiar with the idea of micro reboots? |
22:08:03 | flaviu1 | Araq: And who cares if their program exits with an error code. The work will be done by that time, and returning 1 isn't going to make much of a difference |
22:08:12 | Jehan_ | Araq: From what I can tell, it looks like the workerproc that the slave procedure tries to invoke is nil for me. |
22:09:10 | Joe_knock | Speaking of "slave", did anybody read about the django master/slave thing? |
22:09:14 | Araq | flaviu1: it will also produce a stack trace |
22:09:37 | Araq | Joe_knock: we already have 'jester' as web framework |
22:10:15 | Araq | Jehan_: I think so (about the micro reboots) |
22:10:48 | flaviu1 | Araq: Varriount has a point about the exception stack being great for c interop. |
22:10:55 | Araq | flaviu1: also 'reading' from an invalid file handle might simply 'quit' |
22:11:02 | Jehan_ | Araq: Wasn't asking for any particular reason, I just happen to think it's a neat idea. |
22:12:44 | Araq | flaviu1: however reading from EOF should produce an error, I think, so that you can stack 'read' calls without the boilerplate |
22:13:09 | flaviu1 | Why isn't read just an iterator? |
22:14:25 | Araq | why should it? |
22:15:15 | flaviu1 | because then we can avoid any exceptions, iterators have a similar mechanism. |
22:17:31 | Joe_knock | Does anybody have a Wikipedia account here? |
22:17:35 | Araq | Jehan_: well I've no idea how the workerproc can be nil |
22:18:06 | Jehan_ | Oops, nevermind, it looks like it may be the worker ptr itself. |
22:18:15 | flaviu1 | Joe_knock: I do, but they think that I'm a shill for some book company or something |
22:18:30 | Jehan_ | Or can it? But then the assert would blow up already. |
22:18:41 | Jehan_ | I'll have to look at it tomorrow, after I've had some sleep. |
22:18:46 | Joe_knock | flaviu1: Can you add jester to this: http://en.wikipedia.org/wiki/Sinatra_%28software%29 |
22:19:21 | Araq | Joe_knock: but how does that work? a web framework written in a language that doesn't exist? |
22:19:34 | Araq | Jehan_: yeah well, same problem here :-) |
22:20:16 | Joe_knock | lol, does nimrod not have a wikipedia page? |
22:20:25 | flaviu1 | Joe_knock: It got deleted |
22:20:32 | flaviu1 | https://en.wikipedia.org/wiki/Nimrod_%28programming_language%29 |
22:21:10 | Jehan_ | Joe_knock: In order to have a Wikipedia page, you need secondary sources for a topic. |
22:21:24 | Jehan_ | Primary sources only are verboten. |
22:21:41 | Varriount | More than one secondary source, if Nimrod's wiki page deletion is to be used as an example |
22:21:50 | Araq | if only it were that easy ... |
22:22:05 | Araq | blog posts do not count as secondary source |
22:22:13 | Jehan_ | Araq: Necessary, not sufficient condition. :) |
22:22:14 | fowl | ok |
22:22:19 | fowl | i fixed something |
22:22:23 | fowl | now i can go smoke pot |
22:22:29 | Joe_knock | So if we all started publishing stuff on our personal blogs for nimrod, would that help? |
22:22:38 | Joe_knock | aah no blog posts |
22:22:42 | Jehan_ | The thing is, I totally understand why the rule exists. |
22:22:53 | Varriount | Araq: Could nimrod 'switch' to using the exception stack for specific portions of code? Like for sections where external code is calling into a nimrod procedure? |
22:22:58 | flaviu1 | Araq: Get Dr.Dobb's to change the Nimrod article's author to dom96 :P |
22:23:04 | Jehan_ | But it does put Wikipedia at odds with all kinds of emerging phenomena. |
22:23:10 | flaviu1 | Bam, a secondary source |
22:23:28 | Araq | Dr.Dobbs doesn't count, it's been written by me |
22:23:36 | Joe_knock | Dr dobbs did specify about a write-up for nimrod soon, so that should be a major valid source. |
22:23:37 | Jehan_ | "Disemvoweling" is another contentious topic. |
22:23:54 | Araq | I can write a book about it and it doesn't count |
22:23:56 | flaviu1 | Araq: Thats why I said change the article author :P |
22:24:12 | Araq | somebody else should write a book about it |
22:24:23 | Jehan_ | Or somebody with too much time on their hands needs to churn out secondary sources. :) |
22:24:31 | Araq | that would likely have more errors but it's better for wikipedia |
22:24:43 | Araq | it's simply absurd |
22:25:19 | Varriount | What constitutes a 'secondary source'? |
22:25:19 | Joe_knock | Which other valid sources can be approached about nimrod? How about... Approaching Mozilla to evaluate their Rust against Nimrod? :D |
22:25:20 | Jehan_ | Araq: Well, the idea is that topics that are worthwhile for a dictionary to cover should have multiple people writing about them. |
22:25:49 | Jehan_ | Joe_knock: It could be as simple as publishing a few academic papers on Nimrod. |
22:25:58 | Araq | Jehan_: sure but then people writing about them doesn't count either |
22:26:13 | flaviu1 | Got a secondary source! http://www.drdobbs.com/jvm/the-rise-and-fall-of-languages-in-2013/240165192 |
22:26:17 | Araq | e.g. blog posts are irrelevant |
22:26:39 | flaviu1 | Nimrod gets a passing reference where it is compared with Python and Pascal |
22:27:03 | flaviu1 | "Nimrod, in counterpoint, is stable and presents a most original design that straddles Pascal and Python and compiles to C code or JavaScript" |
22:27:03 | Jehan_ | I wouldn't worry too much about Wikipedia myself. |
22:27:18 | Jehan_ | People who look up something on Wikipedia already know about it. |
22:27:24 | fowl | why cant you site the github search for lang=nimrod |
22:27:42 | fowl | cite* |
22:28:01 | Joe_knock | fowl: Perhaps they're trying to maintain quality. Otherwise I could write any garbage, call it a language and site github. |
22:28:08 | Joe_knock | *cite |
22:28:10 | flaviu1 | *cite |
22:28:21 | Jehan_ | fowl: The idea of the requirement is to establish notability. |
22:28:49 | Jehan_ | s/of/behind/ |
22:29:24 | Jehan_ | But honestly, I'd worry more about creating the mythical killer app for Nimrod. :) |
22:29:33 | Varriount | There's also the possibility that someone on Wikipedia doesn't like the threat of Nimrod pushing his or her own favorite language out of the spotlight. |
22:29:46 | flaviu1 | Jehan_: Please make one |
22:29:52 | Araq | Varriount: that's rather unlikely |
22:30:25 | Jehan_ | Varriount: The more likely explanation is that Wikipedia simply creates its own breed of editor-bureaucrats. |
22:30:29 | * | Demos joined #nimrod |
22:30:53 | Araq | Jehan_: mythical killer app? that doesn't work. it only worked for Rails, kind of |
22:31:20 | Jehan_ | Araq: Java, too. |
22:31:26 | Araq | and note this is not simply an *app* but something to write software in. |
22:31:41 | Joe_knock | I have an idea... So let me state it and share your feedback. Whilst moving towards 1.0, we can establish an informal "Nimrod Foundation" just to legitimize what we're trying to do. Of course, Supreme Leader Araq will head the foundation. We can also start accepting donations (bitcoin anyone?). Now once we reach 1.0, we can get a guy who writes good english with a technical guy to draft up a "Press Release", which we release to a |
22:31:41 | Joe_knock | ll major tech outlets to basically say "We're 1.0, we've arrived". Viola, we now have references. |
22:31:46 | Jehan_ | Well, there are several factors that helped Java, but the promise of web apps was one of them. |
22:32:10 | Jehan_ | Also, I'd use "killer app" more broadly. It can also be a library or framework (as per RoR). |
22:34:13 | Jehan_ | And if it's any comfort, all the other languages face the same problem. |
22:34:55 | Jehan_ | Right now, Java/C++/C#/Python/Ruby/etc. are simply good enough for 99% of the problems that people have. |
22:34:58 | Araq | Joe_knock: we already accept donations |
22:35:31 | Jehan_ | So, unless a new language improves productivity in some novel way, it's an uphill struggle. |
22:35:49 | Jehan_ | Still can be done (see Python), but that seems to take time. |
22:36:29 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
22:36:40 | Araq | I consider the 'parallel' stuff a killer feature fwiw |
22:37:01 | Jehan_ | Araq: If it's done right, yes. :) |
22:37:15 | Jehan_ | And by right I mean "expressive enough", not "the way I'd do it". :) |
22:37:38 | Jehan_ | There are probably at least half a dozen ways to do concurrency "right". |
22:38:15 | Jehan_ | And it's baffling that there doesn't seem to be a single language that manages to do even one of them. |
22:38:20 | Jehan_ | Well, mainstream languages. |
22:38:39 | Jehan_ | I knew a few academic and experimental ones that nobody else seems to know about. |
22:38:52 | Jehan_ | s/knew/know/ |
22:39:15 | Araq | well you're a researcher ... language designers are amateurs |
22:39:26 | Araq | they have to be to get anything done :P |
22:39:35 | Jehan_ | Araq: Heh. :) |
22:40:00 | Jehan_ | I'm still surprised that Sun managed to sell *anyone* on Java 1.0. |
22:40:37 | Araq | Go is very similar to Java |
22:41:16 | Jehan_ | Similar to Java 1.0? In many ways, yes, though at least they have a real compiler and not just a bytecode interpreter. |
22:41:41 | Araq | the philosophy behind the languages is the same, really |
22:41:42 | Jehan_ | Java didn't have native compilation (JIT or otherwise) until 1.1 or 1.2 or so. |
22:41:43 | * | darkf joined #nimrod |
22:42:05 | Jehan_ | Araq: The philosophy of ignoring existing, time-tested solutions, you mean? :) |
22:42:14 | * | freezerburnv joined #nimrod |
22:42:39 | Araq | no, the philosophy of "lets not have that, somebody misused this feature somewhere" |
22:42:49 | Jehan_ | I have to say that I'm still struggling with the concept of a language not having parametric polymorphism in this day and age. |
22:44:53 | * | xenagi joined #nimrod |
22:46:47 | Jehan_ | Araq: But yes, Java 1.0 was essentially a subset of Simula 67 with a C syntax. I.e. language design that was almost 30 years old warmed up again (and done subtly wrong in the process). |
22:47:18 | Jehan_ | Luckily, the current version is much improved, but as I said, I'm still surprised that they ever managed to sell anyone on it. |
22:48:07 | Araq | I dunno. Simula 67 didn't have both class and interface, I think |
22:49:33 | Jehan_ | Fair enough, but I think interfaces were about the only thing that was new, and they didn't get that right, either. |
22:50:00 | Matthias247 | Jehan_: afaik they sold it exactly with the argument of simplicity and only tried&proven features. More complex stuff existed - and they didn't want it |
22:50:27 | Jehan_ | Matthias247: What people got all starry-eyed over was running applications in the browser. |
22:50:44 | Araq | you can't get that right. it's fundamentally flawed. You then have 2 hierarchies and people constantly need to decide which one to pick. |
22:50:49 | Jehan_ | The irony is, of course, that these days Java is pretty much a server-centric language. :) |
22:51:42 | Jehan_ | Araq: Exactly. They had seen the problems with multiple inheritance in C++ and somehow concluded the problem was unsolvable. Nevermind the fact that other languages had done MI cleanly. |
22:51:47 | Matthias247 | applets were one thing. but it was always also for server and "enterprise" things |
22:52:32 | Jehan_ | Matthias247: More importantly, it was free (which was rare for a language implementation at the time), and it was an imperative language with GC (also rare). |
22:53:15 | Jehan_ | Unfortunately, as a result it created a belief is that GCed languages must invariably be slow. |
22:54:51 | Jehan_ | Which, interestingly enough, led to people using the even slower RAII-based reference counting in C++. :) |
23:01:46 | * | Matthias247 quit (Read error: Connection reset by peer) |
23:03:15 | Jehan_ | Araq: Is it possible to safely overload "defined" for specific types? |
23:04:02 | EXetoC | woot |
23:05:22 | Araq | Jehan_: no, 'defined' can be shadowed though |
23:06:27 | Jehan_ | Araq: So, if I were to define an object type with an attribute "defined", then the normal defined proc would stop working within that module? |
23:06:43 | Araq | you can always use system.defined |
23:07:13 | Jehan_ | Nah, in that case I'll just avoid it. :) |
23:07:33 | * | nequitans quit (Ping timeout: 243 seconds) |
23:08:41 | * | nequitans joined #nimrod |
23:12:08 | * | Jehan_ quit (Quit: Leaving) |
23:13:45 | fowl | can someone reproduce https://github.com/Araq/Nimrod/issues/1241 |
23:18:17 | * | freezerburnv quit (Quit: freezerburnv) |
23:23:03 | * | hoverbear quit () |
23:29:40 | Araq | fowl: sorry, can look at it tomorrow |
23:29:45 | Araq | good night |
23:29:55 | fowl | good night |
23:35:49 | * | freezerburnv joined #nimrod |
23:47:13 | * | hoverbear joined #nimrod |
23:48:01 | * | hoverbear quit (Client Quit) |