<< 01-06-2014 >>

00:00:05BitPuffinVarriount: well my point was that abusing exceptions anywhere will make things slower
00:00:22VarriountAraq: How should the CreateSymbolicLink not be imported?
00:02:21AraqVarriount: not sure. quickest way out: add some .deadCodeElim:on
00:02:46VarriountAraq: Why isn't that on by default?
00:03:12Araqcause it's an optimization
00:06:33Araqgood night (this time for real)
00:07:20fowlthe annoying thing about c is some functions return 0 for "good" and some use 0/1 like bool
00:10:53flaviu1With 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:55fowlyou can implement adts in nimrod too, its just a little more wordy
00:12:39flaviu1Yeah, but it isn't considered idiomatic. Also, it isn't more wordy if you don't want it to be.
00:12:40fowlhttps://gist.github.com/fowlmouth/c14544fccde769bd61aa#file-ent_packets-nim-L19
00:12:57fowlits wordier than haskell
00:13:13flaviu1Write a package for ADT pattern matching
00:13:24flaviu1I wrote half of one, before getting stuck on a bug
00:13:46fowlim waiting for compiletime type introspection
00:13:57flaviu1fowl: Nimrod has RTTI
00:14:13fowlim not interested in that
00:14:34flaviu1What do you want to do?
00:14:54fowluse it at compiletime, like i said
00:15:18flaviu1Oh, I misread
00:15:42flaviu1Isn't there compile time type information?
00:15:49flaviu1The compiler has access to it
00:15:57fowlno
00:16:06fowltheres no api to access it
00:18:27Varriountfowl: typetraits?
00:19:48fowlno?
00:20:27Varriountfowl: What kind of type information do you need?
00:24:16fowlto see the structure of a type
00:25:05Varriountfowl: Have you asked Araq how to go about implementing such a thing?
00:27:08flaviu1Syntax highlighting is a huge pain
00:27:55flaviu1Even after everything gets put in the correct path, I still have no idea why it doesn't work
00:28:10Varriountflaviu1: Yep. Especially since all the editors I've seen use regex as the primary parsing method.
00:29:40fowlVarriount, no, i cant make such a commitment
00:30:17flaviu1No, the syntax highlighter works fine. Getting it to be recognized doesn't, I think ruby has some sort of compilation cache somewhere
00:38:34flaviu1It 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:10flaviu1Minor hacks later, it looks great and syntax highlighting works
01:32:14*Joe_knock joined #nimrod
01:32:52Joe_knockanybody awake?
01:46:21flaviu1Yes
01:46:54Joe_knockI'm getting this error: lib/system.nim(2721, 5) Error: implementation of 'system.rand(max: int): int' expected
01:47:06Joe_knockUbuntu12.04
01:47:46flaviu1Someone else had the same issue a while ago
01:47:52flaviu1Maybe I can find the logs
01:48:41*Klaufir joined #nimrod
01:48:47Klaufirwhy is (1 or 2) == 3 ?
01:49:04flaviu1Joe_knock: http://build.nimrod-lang.org/irclogs/28-05-2014.html , C-f for rand
01:49:12flaviu1Klaufir: Bitwise or
01:49:20Klaufiroh, thankyou
01:50:05flaviu1Joe_knock: I don't really like the solution, but it should be the fastest way to get things working
01:52:12Joe_knockAraq doesn't really provide a way for "reinstalling things properly"
01:58:05Klaufirin the manual
01:58:14Klaufirthere is this line for the ffi
01:58:15Klaufirproc printf(formatstr: cstring) {.importc: "printf", varargs.}
01:58:25Klaufirand I get an error when trying to compile
01:58:45Klaufirhttp://lpaste.net/104922
02:01:03flaviu1Klaufir: I can't reproduce it, can you post your full code?
02:01:14Klaufirsure
02:02:50Klaufirhttp://lpaste.net/104923
02:03:01Klaufiri am just learning the language on small examples
02:03:15Klaufirnow, when only the last two lines are in the file, it works perfectly
02:03:38Klaufirbut with the iterator examples above, it somehow misbehaves
02:04:37flaviu1It seems to be the `echo`
02:05:27*brson quit (Ping timeout: 252 seconds)
02:05:53Klaufirit is my fault, or the compiler's fault?
02:06:35VarriountKlaufir: Are you getting a C compiler error?
02:06:39flaviu1If it fails in C gen, its almost always the compiler's fault
02:06:47KlaufirVarriount: yes
02:06:56fowlKlaufir, it works if i add the pragma header:"stdio.h"
02:07:10flaviu1Varriount: having importc: "printf" fails if echo is being used
02:07:43VarriountProbably because echo uses printf
02:07:55fowlKlaufir, add that to the printf pragmas (in {. .})
02:08:10Joe_knockit looks like ive installed nimrod, but I still get a: nimrod: command not found. Do directories matter?
02:08:43fowlJoe_knock, are you on linux
02:08:46flaviu1Joe_knock: Is it on your path? `echo $PATH`
02:08:49Klaufirfowl: yes, thank you. it works this way
02:09:07Joe_knockfowl: yes, ubuntu 12.04 .
02:09:17Joe_knockflaviu1: I don
02:09:24fowlJoe_knock, best way to install in linux is to symlink nimrod into your $PATH
02:09:28Joe_knockI don't see that in the installation instructions
02:09:56Klaufirhow 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:00fowlthe instructions probably say to use koch install
02:10:08flaviu1Joe_knock: Well, technically you can use it by doing `~/Downloads/nimrod/bin/nimrod c -r ./myfile`
02:10:50fowlKlaufir, you can make a pull request, https://github.com/Araq/Nimrod/blob/devel/doc/manual.txt#L5480
02:10:57Joe_knockfowl, 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:00Klaufirfowl: thanks
02:11:34fowlJoe_knock, https://github.com/Araq/Nimrod/blob/devel/install.txt#L22
02:17:33Joe_knockI followed the instructions and now in my usr/bin, I have a broken link to nimrod :-/
02:19:58flaviu1Joe_knock: I think you have to use the full path, ex /home/joe/Downloads/nimrod/.../...
02:20:23fowlflaviu1 is right
02:20:31Joe_knockthat would make sense. Similar to using ECHO_PATH for other software
02:21:01fowlyou can do "$(pwd)/bin/nimrod" if you're in the nimrod dir
02:21:43*q66 quit (Quit: Leaving)
02:21:43flaviu1fowl: Thanks, I've been looking for `pwd` for a while
02:23:44Joe_knockyeah still broken with a full path. let me try pwd
02:23:59flaviu1pwd just gives you a full path
02:25:19Joe_knockweird that the usr/bin still shows it as a broken link, yet it compiled and ran with (pwd).
02:25:24fowlJoe_knock, whats it say from ls -l /usr/bin/nimrod
02:25:58fowlJoe_knock, you need to delete it before ln will work again
02:26:20Joe_knockshould I use ls -l instead of ln -s ?
02:26:38fowlJoe_knock, no, nvm that, ls -l would show you where its linked to
02:26:52flaviu1`ls -l` lists the file information verbosely, `ln -s` makes a symbolic link
02:27:28flaviu1you could also use `stat /usr/bin/nimrod`, that would give roughly the same information as `ls -l`
02:28:07Joe_knockit'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:47flaviu1It might, not the best idea though
02:29:07flaviu1Maybe add the nimrod bin to your path in `~/.bashrc`?
02:29:20Joe_knockI think it will possibly work. But I'm not sure what the purpose of that file is
02:29:27fowlJoe_knock, no, you need the std lib too, you should just use koch install
02:29:37flaviu1It gets run whenever you open a terminal
02:30:06Joe_knockkoch install as in:
02:30:08Joe_knockbin/nimrod c koch
02:30:08Joe_knock./koch boot -d:release
02:30:44fowlno, sry, i meant install.sh thats mentioned by the installation instructions
02:30:47Joe_knockflaviu1: I prefer that option. I'll look into it, as I think I have that running for python too.
02:30:58flaviu1`sudo ./koch install /usr/bin`
02:31:20flaviu1append a slash to that, `sudo ./koch install /usr/bin/`
02:31:22Joe_knockfowl you mean install across the system? The instructions advise against that.
02:31:35fowlok
02:31:42Joe_knockflaviu1: aah okay, I see what that would do.
02:31:42flaviu1Yeah, the package manager might not be too happy with doing stuff like that
02:32:03Joe_knock"There are also ``install.sh`` and ``deinstall.sh`` scripts for distributing
02:32:03Joe_knockthe files over the UNIX hierarchy. However, updating your Nimrod installation
02:32:03Joe_knockis more cumbersome then."
02:32:17Joe_knockaah darn, sorry about that. thought it was 1 paragraph
02:32:37Joe_knockwell it is, but couldn't paste it as such
02:33:20Joe_knockWell 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:16Joe_knockIs the nimrod channel kicking the mozilla guy out of fear for rust wars? :P
02:36:25*Joe_knock quit (Quit: Leaving)
02:42:28flaviu1Yeah, whats going on with brson?
02:43:54flaviu1Oh, his client seems to be bad
02:47:25Klaufiris it true that nimrod can compile to js?
02:48:09flaviu1Klaufir: 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:02fowlflaviu1, this looks nice :O https://gist.github.com/fowlmouth/15b77ced45f7bbe50a7c#file-either_t-nim-L22
04:07:24flaviu1Wow, you started making a macro?
04:07:34fowlno its just a function
04:11:04flaviu1Oh, I see what you're doing
04:12:50*brson_ quit (Quit: leaving)
04:13:52fowlswitch is probably a better name
04:16:09fowlRight() 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:22Araqhi 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:41Varriount|MobileGood morning people!
12:30:02Araqhello
12:33:42*BitPuffin joined #nimrod
13:02:26NimBotAraq/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:12flaviu1Something like xpath might be good for macros
14:57:39Varriount|Mobileflaviu1: nPath?
14:58:59flaviu1haha
15:12:46Varriount|Mobileseriously though, that's a good idea
15:20:16*hoverbear joined #nimrod
15:28:08fowlwheres the nimrod-by-example site
15:28:19flaviu1fowl: https://nimrod-by-example.github.io/
15:28:28flaviu1404, github messed up
15:28:29fowl404
15:28:36flaviu1I sent a support request
15:29:55flaviu1fowl: Also, your fork may be bad. I've been mostly doing force pushes
15:30:39fowlcan i delete it?
15:30:54flaviu1Sure, thats what I usually do
15:32:55flaviu1fowl: If you want, just edit directly on the main branch
15:43:44flaviu1Oh, my bad. I didn't check my email before sending a support reqeuest
15:46:36flaviu1Wow, that's embarrassing
15:49:00flaviu1fowl: 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:35Varriountflaviu1: Did you do the OOP macro section?
16:20:16flaviu1Fowl wrote it, filwit cleaned it up. I also made some modifications for clarity
16:20:44VarriountIt's very well written. The comments in the macro code are especially nice.
16:22:10*Johz joined #nimrod
16:23:09VarriountHello Johz
16:23:23JohzHello
16:31:18*flaviu1 quit (Ping timeout: 240 seconds)
16:48:15dom96The 'in' should really be green.
16:48:25dom96in the syntax highlighting used in nimrod by example
16:49:20*flaviu1 joined #nimrod
16:49:41dom96flaviu1: The 'in' keyword should be green IMO
16:51:56flaviu1dom96: its considered an "Operator.Word", so its in a different category. `and` is also the same way
16:52:33dom96Meh. I guess it doesn't matter that much
16:52:57dom96And it does add a bit of style.
16:53:24flaviu1Anyway, I'd prefer to change `of`, `ref` to bold black, but forking pygments is too much work to little outcome
16:53:45flaviu1It'd be difficult to integrate into the build script
16:53:52dom96why?
16:54:15dom96These are keywords, why should they get a different color?
16:55:10dom96In any case, hopefully tomorrow after my exams i'll add some examples.
16:55:18flaviu1Well, 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:22dom96Good job otherwise :)
16:56:08dom96bbl
16:56:32flaviu1thanks. I have figured out a way to get you an ugly, 1990 throwback page
16:57:34flaviu1if on Firefox, <Alt-v> -> Page Style -> No Style
17:20:06VarriountAnyone not able to boot nimrod devel?
17:30:26flaviu1Varriount: Apparently it doesn't work on ubuntu, something about rand
17:35:54VarriountAraq: 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:33flaviu1I 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:29fowlflaviu1, no, they have value semantics, a copy is made
17:59:51*xenagi quit (Client Quit)
18:00:22*xenagi joined #nimrod
18:00:23flaviu1A copy isn't made when assigning to an index, right?
18:01:20fowlon assignment, yes
18:01:44flaviu1like seq[1] = 2, there is no copy made?
18:02:07fowlif 2 were a string? yes it would be copied
18:02:36flaviu1`2` is the int literal 2
18:03:46fowlthe 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:15fowlunless you mark them shallow
18:04:56flaviu1Ok, I see. The value would be copied into the seq, but the seq itself would not be copied, it would be modified.
18:05:50fowlright
18:07:16flaviu1One last question, do strings behave identically to seqs?
18:08:30fowlflaviu1, it looks like strings are seqs under the hood
18:09:12fowli assume that because string is casted to PGenericSeq in system.nim in the same way seqs are
18:10:01flaviu1Ok, 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:33AraqVarriount: 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:38Araqhi wooya welcome (back)
19:25:14*hoverbear quit (Ping timeout: 240 seconds)
19:27:34*wooya quit (Quit: Bye)
19:32:53VarriountAraq: 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:53VarriountAlso, what is the difference between 'lookp
19:34:08Varriount*'lookup' and 'qualifiedLookup'?
19:34:48*hoverbear joined #nimrod
19:37:27Araqlookup only deals with single identifiers iirc
19:37:36AraqqualifiedLookup deals with module.foo
19:38:35VarriountAraq: What about foo.attribute?
19:38:55*reactormonk quit (Ping timeout: 260 seconds)
19:42:12flaviu1Is there any useful result to calling inc on an enum?
19:47:09AraqVarriount: that's handled in semexprs.nim, the things that deal with nkDotExpr
19:47:30Araqwhich might need changes too ;-)
19:47:39flaviu1Hmm, looping over an enum assumes that the enum is ordinal
19:47:56Araqflaviu1: yeah
19:48:06Araqenums with holes only exist for C interop
19:52:46VarriountAraq: 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:15Araqalright. What about the friendModule patch?
19:54:25VarriountAraq: You mean making friendmodule a seq, and pushing and popping modules off the sequence? I haven't done that yet.
19:54:37Araqyeah, that's what I'm talking about
19:55:42VarriountDoes generic symbol lookup even use the friendmodule data?
19:55:57Araqno
19:56:20Araqit's likely an unrelated bug
19:56:46VarriountAraq: Why doesn't it use the friendmodule data?
19:57:49Araqbecause friend modules is a concept that affects generic *instantiation*
20:03:28*xenagi joined #nimrod
20:08:14VarriountAraq: I fail to see how https://github.com/Araq/Nimrod/issues/1142 *doesn't* deal with generic instantiation.
20:09:32Araqsemgrnc 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:36VarriountAfter all, when nimrod is build with -d:debug, the user error given originates in the generic instantiation compiler procedures
20:10:11Araqwhat's -d:debug? the opposite of -d:release?
20:10:26VarriountAraq: ... You don't know?
20:10:49AraqI never use it
20:11:07AraqI use --verbosity:3 to get a stacktrace
20:11:41VarriountWhen 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:57Araqinteresting XD
20:12:19Varriount*access to private object attributes
20:13:57Araqoh yeah we also need a better error message
20:14:12Araqthat the compiler pretends it doesn't know the field only because it's private is not nice
20:14:14VarriountFor what? Access to private fields?
20:14:19Araqyes
20:14:19EXetoCAraq: but enums with holes are useful in other situations too. what are your thoughts on that?
20:14:36AraqEXetoC: use a distinct int for these
20:16:28VarriountAraq: 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:15Araquse nimgrep -y --ext:nim friendModule compiler
20:17:59VarriountYeah, 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:00Araqare your sure it's semstmts and not semexprs?
20:21:08VarriountAraq: Yeah. 98% sure, anyway.
20:21:20Araqoh well
20:22:46EXetoCAraq: it seems reasonable to support enums with holes too
20:23:12EXetoCmaybe I'll create an RFC some time
20:23:40Araqyeah 'inc' only needs to receive some generated table to lookup the 'next' value
20:23:54Araqpiece of cake and systems programmers will love it
20:26:53VarriountSo system programmers can have their cake and eat it too?
20:27:06EXetoCok that's a bad idea
20:28:01Araq"hey guy, your enum definition sucks, but we won't tell you. we'll do some inefficient shit instead"
20:28:20Varriount" # NOTE: for access of private fields within generics from a different module
20:28:20Varriount # we set the friend module:"
20:28:31EXetoCyou could prevent this using constraints I guess
20:29:05EXetoCbut patching enum type iteration and enum ranges might not be so bad
20:29:35VarriountOr you could just make your own enum type, and use a macro to make the semantics similar.
20:29:46Araqwe need 'enum' as a constraint and then 'realEnum' and 'shittyCEnum'
20:30:06EXetoCunless the latter supports runtime values, in which case maybe there should be something other than ..
20:30:10VarriountWow, those names aren't biased at all!
20:31:20VarriountAraq: Which would you prefer, the use of a sentinal value, or a block?
20:31:27flaviu1I'm actually, probably for the first time in one of these arguments, on Araq's side.
20:31:55flaviu1As long as the manual clearly states the purpose of enums with holes
20:33:54flaviu1Btw, 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:52Araqflaviu1: guess what ... I bet it's a regression. we got generic constraints, 'inc' stopped being special cased. generic constraints checks for 'enum' ...
20:35:02EXetoCflaviu1: improving the iteration semantics and enum range semantics seem reasonable. much of it will be evaluated at compile-time after all
20:35:44flaviu1Araq: Fair enough, I'll report it.
20:38:01flaviu1Now that I think about it, the principle of least surprise dictates that it be impossible to iterate over a disjoint enum
20:39:34Araqflaviu1: the principle of C interop and "be useful" suggests something different though
20:40:04Araqa..b # it's fine I know every value between a and b exists
20:40:16Araq# I'm wrapping C and know what I'm doing
20:41:18Araq# 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:43flaviu1That should also be illegal, its misleading, but that is a hard problem
20:42:24VarriountAraq: Which issue number is the issue that concerns friend modules?
20:45:19*bjz_ joined #nimrod
20:45:26AraqVarriount: #1172
20:45:35Araqthat you closed ...
20:45:43Araqbut you didn't fix the real cause
20:46:06VarriountYes, I'm sorry.
20:46:40VarriountIt's not like anyone else makes mistakes. :P
20:47:17Araqsure 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:25flaviu1Araq: Super easy solution. `case ord(myCEnum) of ord(a)..ord(b): blah blah \n of ord(b)..ord(c) blah blah`
20:48:59flaviu1Ugly, sure. But better than making accidental mistakes easy.
20:49:18flaviu1if you're going to type all those ords, you know what you're doing
20:50:11Araqmeh, I'd rather live with the bugs instead. with a bit of luck people will blame their internet connection for weird behaviours
20:52:20flaviu1Is there a word that means "not well ordered"?
20:52:38Araq"with holes"
20:52:47Araq"C-like"
20:53:20flaviu1haha, but I'm looking for something that sounds mathy :P
20:54:05Varriountflaviu1: Unclassified? Unordered?
20:54:25VarriountOr OOO (Out-Of-Order)
20:54:38Araq"ordered under some bijection"
20:54:53Araq"(which you didn't pick though)"
20:55:22VarriountNon-Optimal Positioning?
20:56:25flaviu1I think Araq's is the most precise. Unordered leaves some ambuity
20:56:41VarriountAraq: Making the 'friendModule' a stack seems to have done the trick.
20:59:27AraqVarriount: very well. do a PR and let me review the patch
21:00:17VarriountAraq: First I must document all the procedures/variables I've touched. :3
21:01:01Araqplease no more javadoc comments :P
21:01:57VarriountAraq: To do that, I'll need some information, like, for example...
21:02:14flaviu1Araq: Some javadocs are excellent, take http://docs.oracle.com/javase/7/docs/api/java/lang/String.html for example
21:02:26VarriountWhat exactly is the purpose of semAfterMacroCall?
21:03:09flaviu1The main thing with javadoc is that Eclipse, the most common IDE (and worst), automatically generates crap comments.
21:03:30Araq"perform semantic checking after a macro call"
21:03:31VarriountAraq: And what is it supposed to do? (Besides semantically check something after a macro call)
21:03:45*Joe_knock joined #nimrod
21:03:59VarriountAraq: Is that what you want me to put as the doc-comment?
21:04:34*xenagi quit (Quit: Leaving)
21:04:45Araqno?
21:05:05Araq## 'sem' stands for 'semantic checking'. now get over it for fuck's sake.
21:05:17flaviu1Is the semantic checking done on the macro output or on the entire program?
21:05:32Araqthat's the doc-comment for every sem* proc
21:06:25Araqflaviu1: what do you think? we re-run the semantic checking over the entire program after 1 macro expansion?
21:06:33VarriountAraq: 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:12Araqwell it checks the resulting AST for proper semantics. semantic checking is type checking plus checking of other things
21:08:22Araqlike that you don't re-assign a 'let' variable
21:08:44Araqalso unbound identifiers need to be bound
21:10:06Joe_knockshit I dont even understand that stuff yo
21:13:21Araqflaviu1: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html is as bad as any other javadoc
21:13:41flaviu1Huh?
21:14:26Araqwell "string" is a bad example really. If you don't know "string" why would you even program in Java
21:14:28VarriountAraq: Ok, now how about generateInstance, in seminst.nim?
21:14:45*Johz quit (Ping timeout: 265 seconds)
21:14:56Araqdunno ... maybe it generates an instance...
21:16:02flaviu1Araq: 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:27Araqit makes a copy
21:17:04VarriountAraq: Why must you make documentation more painful than pulling teeth?
21:17:53Araqso lets see
21:17:58AraqString(byte[] bytes)
21:18:00AraqConstructs a new String by decoding the specified array of bytes using the platform's default charset.
21:18:12Araqhow does that answer your question?
21:19:11flaviu1I'd thought I'd read copy in there somewhere but I guess not.
21:19:22Araqbtw http://nimrod-lang.org/parsecsv.html has the right idea about documentation
21:19:36Araq"Example: How to use the parser"
21:20:23flaviu1Yeah, those docs are pretty good
21:20:42flaviu1They have a few style issues, but doesn't really matter
21:20:55VarriountAraq: What is the ID Table used for in the generateInstance procedure?
21:21:07Joe_knockflaviu1: http://flaviut.github.io/nimrod-by-example/ = 404 error
21:21:20flaviu1Joe_knock: Yes, I know. Its moved
21:21:27flaviu1https://nimrod-by-example.github.io/objects/
21:21:41flaviu1The new version updates automatically, whenever I push
21:21:50Araqsome shitty type-unsafe pre-generic way to have a PType->PType or perhaps a PSym->PSym mapping, Varriount
21:22:16flaviu1Varriount: Yeah, I have a branch laying around that cleans it up somewhat
21:22:43flaviu1It isn't done though, I'm not completely sure about correctness
21:23:03AraqVarriount: and yes, now we're getting somewhere. This is in fact a useful comment then.
21:23:27VarriountAraq: And in the context of generics, what is it used for? Mapping a generic type parameter to a concrete type?
21:23:39flaviu1Oh, not idents, that's a string -> something else mapping
21:23:47Araqexactly
21:30:40Joe_knockWe need to start pushing out basic tutorials to get the language out to the people. Suggestions for a tutorial?
21:31:03AraqI thought we already have tutorials
21:31:06VarriountJoe_knock: Anythin Python does that me don't.
21:31:09Varriount*Anything
21:31:15Varriount*we
21:31:17flaviu1*we :P
21:31:59Joe_knockHow about something with parallel processing? I see none of those in the current tutorials. Maybe a fibonnaci counter using parallel processing.
21:32:34flaviu1Joe_knock: If you want, send me a PR
21:32:47AraqJoe_knock: that will likely be outdated within weeks
21:33:05Araqas Nimrod got a 'parallel' statment in the new_spawn branch
21:34:49*reactormonk joined #nimrod
21:34:56Joe_knockI 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:46Araqwell 0.9.4's spawn and sync might be good enough for that
21:37:29Joe_knockit 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:33flaviu1Actors are all the rage these days, why not do something with that library?
21:38:51Araqdon't use them
21:38:57Araqthey are ugly and slow
21:41:01VarriountAraq: https://github.com/Araq/Nimrod/pull/1240
21:41:31Matthias247hmm, all the rage - I think they are mainly used in scala and erlang. And both are not very mainstream
21:42:21Joe_knockMatthias247: Erlang made web news by being whatsapp-powered, so it is "mainstream" now
21:42:24flaviu1/r/programming is all over them, so I'd say they're pretty mainstream
21:43:09*Jehan_ joined #nimrod
21:43:09Matthias247Joe_knock: that means it powers ONE application - that's not mainstream ;)
21:43:37Matthias247ok, it powers a lot more. But far from the java or .net dimension
21:43:38VarriountDoesn't Go follow an actors model of sorts?
21:43:39flaviu1Wow, Scala is just below Matlab in mainstreamness
21:44:00Matthias247Varriount: Go is CSP. It's similar, but not the same
21:44:12flaviu1Varriount: Don't get Araq started on Go :P
21:44:37Joe_knockMatthias247: I think the value counts somewhat. something like $20 billion will motivate many to use Erlang, even if it's shit confusing
21:45:24VarriountJoe_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:28Jehan_Varriount: Not according to any definition of actors that I know of.
21:45:43Matthias247flaviu1: if /r/programming would tell the truth about used programming languages then every second program would be in Haskell ;)
21:45:44Joe_knockVarriount: Which is why we are here ;-)
21:45:56flaviu1Matthias247: Twitter uses scala pretty much exclusivly
21:46:39Varriount"PHP: Where 0x00+2 == 4"
21:46:44Joe_knockI currently see Go and Rust as the 2 main competitors to Nimrod, but no flame wars...
21:46:59*bjz_ joined #nimrod
21:47:17Araqah hi Jehan_. please do me a favor and run nimrod c -r tests/parallel/tpi.nim
21:47:18Jehan_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:23flaviu1Joe_knock: Yeah, thats pretty much the way it is
21:47:36Matthias247reddit 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:47Araqit crashes on linux and sometimes works on windows
21:47:48Jehan_Araq: Do I have to pull a new version or checkout a different branch?
21:47:52flaviu1Structural subtyping is very nice
21:47:58Araqthe branch is new_spawn, Jehan_
21:48:05Jehan_Okies. Give me a minute.
21:48:07Joe_knockBut 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:36Joe_knockI think Java and .NET are champions of the real-world, with PHP in third.
21:48:51Matthias247don't forget C(++) ;)
21:49:07fowlVarriount, i found a problem with fsmonitor
21:49:25Joe_knockit's hard to identify C/C++, because they go well beyond consumer electronics.
21:49:29Varriountfowl: Talk to dom96, I'm not the one who wrote the original module.
21:49:39Jehan_Go's major weaknesses are that its type system is too weak and its concurrency features too primitive.
21:49:54VarriountJehan_: Don't forget lack of exceptions
21:50:15flaviu1Varriount: I like lack of exceptions
21:50:25Jehan_Varriount: I wouldn't mind lack of exceptions, except that the way they're doing it is not very good.
21:50:37flaviu1I'm probably the only one here that does...
21:50:46Jehan_But then, few languages have a coherent story with respect to exceptions to begin with.
21:51:30Jehan_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:31Varriount*cough*Python*cough*
21:51:44Jehan_Same story with Python. :0
21:51:50Matthias247go was designed with simplicity in mind. That's at least a valid goal (java had the same)
21:51:50Jehan_Or Nimrod, for that matter.
21:52:04fowlcan someone try this https://gist.github.com/fowlmouth/385731cf8a93aa68fda7
21:52:18fowlVarriount, thought you were working on it, sry
21:52:45Varriountfowl: I'm working on a Windows, newasync version.
21:52:52Jehan_Araq: Getting illegal storage access.
21:53:21AraqJehan_: I get this:
21:53:24Araqthreadpool.nim(235) slave
21:53:26Araqtpi.nim(13) termWrapper
21:53:27Araqthreadpool.nim(143) nimPromiseSignal
21:53:29AraqSIGSEGV: Illegal storage access. (Attempt to read from nil?)
21:53:55Jehan_Traceback (most recent call last)
21:53:55Jehan_threadpool.nim(233) slave
21:53:55Jehan_tpi.nim(13) termWrapper
21:53:55Jehan_SIGSEGV: Illegal storage access. (Attempt to read from nil?)
21:53:55Jehan_Traceback (most recent call last)
21:53:55Jehan_threadpool.nim(233) slave
21:53:56Jehan_tpi.nim(13) termWrapper
21:53:56Jehan_SIGSEGV: Illegal storage access. (Attempt to read from nil?)
21:53:56Jehan_Error: execution of an external program failed
21:55:15Jehan_Varriount: The way I'm doing exceptions in my own project is that I'm borrowing from logical languages like Prolog.
21:56:12Jehan_There are two aspects to exception handling.
21:56:32Jehan_An exception occurs when a function is partial, not total, and is being raised where the function is undefined.
21:57:01AraqJehan_: well it fails for me in nimPromiseSignal and what's *really* confusing, I added echos
21:57:17Araqand nimPromiseSignal echos before nimCreatePromise echos
21:57:39Araqbut when I check the generated code ... I have no idea how that can ever happen
21:57:58Jehan_Catching exception turns a partial function with result type T into a total function with result type Try[T].
21:58:07Jehan_Araq: Hmm.
21:58:31AraqJehan_: this is not the whole truth :P
21:59:12AraqTry[T] is a lie too, it's more like PotentialEndlessLoop[Try[T]]
22:00:02Jehan_Araq: Correct, but I'm trying to deal with stuff that's actually feasible. Total correctness is difficult.
22:00:09Jehan_And, as I said, it's only part of the story.
22:00:46Jehan_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:08Joe_knockWill you guys be putting your weight behind any web frameworks? Or will anything beyond the core language be "loosely-coupled" ?
22:02:18Jehan_Not to mention that side effects in code that can throw exceptions is a bit of a hairy problem in general.
22:04:26AraqI'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:36Jehan_Araq: Where's the type "Worker" defined?
22:04:51VarriountAraq: What's the current exception mechanism?
22:05:00Araqlib/pure/concurrency/threadpool.nim, Jehan_
22:05:03flaviu1Araq: The main flaw with the error stack is that no one will be bother to check it.
22:05:34Araqflaviu1: that's why I'll make it produce an error at program exit
22:05:35Jehan_Araq: Found it, apparently I'm too stupid to know how to correctly search in a text editor.
22:05:48flaviu1Varriount: Stack unwinding
22:05:58VarriountAraq: Which won't occur in long-running programs (like servers)
22:06:04Jehan_I blame it on finally having filed my tax return and my brain still being out of sync with reality. :)
22:06:29AraqVarriount: lol that's actually a good point ...
22:06:54Araqin other words: I didn't think of it :P
22:07:38Jehan_Araq: Are you familiar with the idea of micro reboots?
22:08:03flaviu1Araq: 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:12Jehan_Araq: From what I can tell, it looks like the workerproc that the slave procedure tries to invoke is nil for me.
22:09:10Joe_knockSpeaking of "slave", did anybody read about the django master/slave thing?
22:09:14Araqflaviu1: it will also produce a stack trace
22:09:37AraqJoe_knock: we already have 'jester' as web framework
22:10:15AraqJehan_: I think so (about the micro reboots)
22:10:48flaviu1Araq: Varriount has a point about the exception stack being great for c interop.
22:10:55Araqflaviu1: also 'reading' from an invalid file handle might simply 'quit'
22:11:02Jehan_Araq: Wasn't asking for any particular reason, I just happen to think it's a neat idea.
22:12:44Araqflaviu1: however reading from EOF should produce an error, I think, so that you can stack 'read' calls without the boilerplate
22:13:09flaviu1Why isn't read just an iterator?
22:14:25Araqwhy should it?
22:15:15flaviu1because then we can avoid any exceptions, iterators have a similar mechanism.
22:17:31Joe_knockDoes anybody have a Wikipedia account here?
22:17:35AraqJehan_: well I've no idea how the workerproc can be nil
22:18:06Jehan_Oops, nevermind, it looks like it may be the worker ptr itself.
22:18:15flaviu1Joe_knock: I do, but they think that I'm a shill for some book company or something
22:18:30Jehan_Or can it? But then the assert would blow up already.
22:18:41Jehan_I'll have to look at it tomorrow, after I've had some sleep.
22:18:46Joe_knockflaviu1: Can you add jester to this: http://en.wikipedia.org/wiki/Sinatra_%28software%29
22:19:21AraqJoe_knock: but how does that work? a web framework written in a language that doesn't exist?
22:19:34AraqJehan_: yeah well, same problem here :-)
22:20:16Joe_knocklol, does nimrod not have a wikipedia page?
22:20:25flaviu1Joe_knock: It got deleted
22:20:32flaviu1https://en.wikipedia.org/wiki/Nimrod_%28programming_language%29
22:21:10Jehan_Joe_knock: In order to have a Wikipedia page, you need secondary sources for a topic.
22:21:24Jehan_Primary sources only are verboten.
22:21:41VarriountMore than one secondary source, if Nimrod's wiki page deletion is to be used as an example
22:21:50Araqif only it were that easy ...
22:22:05Araqblog posts do not count as secondary source
22:22:13Jehan_Araq: Necessary, not sufficient condition. :)
22:22:14fowlok
22:22:19fowli fixed something
22:22:23fowlnow i can go smoke pot
22:22:29Joe_knockSo if we all started publishing stuff on our personal blogs for nimrod, would that help?
22:22:38Joe_knockaah no blog posts
22:22:42Jehan_The thing is, I totally understand why the rule exists.
22:22:53VarriountAraq: 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:58flaviu1Araq: Get Dr.Dobb's to change the Nimrod article's author to dom96 :P
22:23:04Jehan_But it does put Wikipedia at odds with all kinds of emerging phenomena.
22:23:10flaviu1Bam, a secondary source
22:23:28AraqDr.Dobbs doesn't count, it's been written by me
22:23:36Joe_knockDr dobbs did specify about a write-up for nimrod soon, so that should be a major valid source.
22:23:37Jehan_"Disemvoweling" is another contentious topic.
22:23:54AraqI can write a book about it and it doesn't count
22:23:56flaviu1Araq: Thats why I said change the article author :P
22:24:12Araqsomebody else should write a book about it
22:24:23Jehan_Or somebody with too much time on their hands needs to churn out secondary sources. :)
22:24:31Araqthat would likely have more errors but it's better for wikipedia
22:24:43Araqit's simply absurd
22:25:19VarriountWhat constitutes a 'secondary source'?
22:25:19Joe_knockWhich other valid sources can be approached about nimrod? How about... Approaching Mozilla to evaluate their Rust against Nimrod? :D
22:25:20Jehan_Araq: Well, the idea is that topics that are worthwhile for a dictionary to cover should have multiple people writing about them.
22:25:49Jehan_Joe_knock: It could be as simple as publishing a few academic papers on Nimrod.
22:25:58AraqJehan_: sure but then people writing about them doesn't count either
22:26:13flaviu1Got a secondary source! http://www.drdobbs.com/jvm/the-rise-and-fall-of-languages-in-2013/240165192
22:26:17Araqe.g. blog posts are irrelevant
22:26:39flaviu1Nimrod gets a passing reference where it is compared with Python and Pascal
22:27:03flaviu1"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:03Jehan_I wouldn't worry too much about Wikipedia myself.
22:27:18Jehan_People who look up something on Wikipedia already know about it.
22:27:24fowlwhy cant you site the github search for lang=nimrod
22:27:42fowlcite*
22:28:01Joe_knockfowl: Perhaps they're trying to maintain quality. Otherwise I could write any garbage, call it a language and site github.
22:28:08Joe_knock*cite
22:28:10flaviu1*cite
22:28:21Jehan_fowl: The idea of the requirement is to establish notability.
22:28:49Jehan_s/of/behind/
22:29:24Jehan_But honestly, I'd worry more about creating the mythical killer app for Nimrod. :)
22:29:33VarriountThere'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:46flaviu1Jehan_: Please make one
22:29:52AraqVarriount: that's rather unlikely
22:30:25Jehan_Varriount: The more likely explanation is that Wikipedia simply creates its own breed of editor-bureaucrats.
22:30:29*Demos joined #nimrod
22:30:53AraqJehan_: mythical killer app? that doesn't work. it only worked for Rails, kind of
22:31:20Jehan_Araq: Java, too.
22:31:26Araqand note this is not simply an *app* but something to write software in.
22:31:41Joe_knockI 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:41Joe_knockll major tech outlets to basically say "We're 1.0, we've arrived". Viola, we now have references.
22:31:46Jehan_Well, there are several factors that helped Java, but the promise of web apps was one of them.
22:32:10Jehan_Also, I'd use "killer app" more broadly. It can also be a library or framework (as per RoR).
22:34:13Jehan_And if it's any comfort, all the other languages face the same problem.
22:34:55Jehan_Right now, Java/C++/C#/Python/Ruby/etc. are simply good enough for 99% of the problems that people have.
22:34:58AraqJoe_knock: we already accept donations
22:35:31Jehan_So, unless a new language improves productivity in some novel way, it's an uphill struggle.
22:35:49Jehan_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:40AraqI consider the 'parallel' stuff a killer feature fwiw
22:37:01Jehan_Araq: If it's done right, yes. :)
22:37:15Jehan_And by right I mean "expressive enough", not "the way I'd do it". :)
22:37:38Jehan_There are probably at least half a dozen ways to do concurrency "right".
22:38:15Jehan_And it's baffling that there doesn't seem to be a single language that manages to do even one of them.
22:38:20Jehan_Well, mainstream languages.
22:38:39Jehan_I knew a few academic and experimental ones that nobody else seems to know about.
22:38:52Jehan_s/knew/know/
22:39:15Araqwell you're a researcher ... language designers are amateurs
22:39:26Araqthey have to be to get anything done :P
22:39:35Jehan_Araq: Heh. :)
22:40:00Jehan_I'm still surprised that Sun managed to sell *anyone* on Java 1.0.
22:40:37AraqGo is very similar to Java
22:41:16Jehan_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:41Araqthe philosophy behind the languages is the same, really
22:41:42Jehan_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:05Jehan_Araq: The philosophy of ignoring existing, time-tested solutions, you mean? :)
22:42:14*freezerburnv joined #nimrod
22:42:39Araqno, the philosophy of "lets not have that, somebody misused this feature somewhere"
22:42:49Jehan_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:47Jehan_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:18Jehan_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:07AraqI dunno. Simula 67 didn't have both class and interface, I think
22:49:33Jehan_Fair enough, but I think interfaces were about the only thing that was new, and they didn't get that right, either.
22:50:00Matthias247Jehan_: 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:27Jehan_Matthias247: What people got all starry-eyed over was running applications in the browser.
22:50:44Araqyou 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:49Jehan_The irony is, of course, that these days Java is pretty much a server-centric language. :)
22:51:42Jehan_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:47Matthias247applets were one thing. but it was always also for server and "enterprise" things
22:52:32Jehan_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:15Jehan_Unfortunately, as a result it created a belief is that GCed languages must invariably be slow.
22:54:51Jehan_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:15Jehan_Araq: Is it possible to safely overload "defined" for specific types?
23:04:02EXetoCwoot
23:05:22AraqJehan_: no, 'defined' can be shadowed though
23:06:27Jehan_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:43Araqyou can always use system.defined
23:07:13Jehan_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:45fowlcan someone reproduce https://github.com/Araq/Nimrod/issues/1241
23:18:17*freezerburnv quit (Quit: freezerburnv)
23:23:03*hoverbear quit ()
23:29:40Araqfowl: sorry, can look at it tomorrow
23:29:45Araqgood night
23:29:55fowlgood night
23:35:49*freezerburnv joined #nimrod
23:47:13*hoverbear joined #nimrod
23:48:01*hoverbear quit (Client Quit)