<< 14-10-2014 >>

00:16:07*darkf joined #nimrod
00:43:17*kshlm joined #nimrod
00:58:42*brson quit (Ping timeout: 246 seconds)
01:02:21*jhc76 quit (Quit: Leaving)
01:17:47*kshlm quit (Ping timeout: 272 seconds)
01:32:27*johnsoft quit (Ping timeout: 255 seconds)
01:32:46*johnsoft joined #nimrod
01:48:02*saml_ joined #nimrod
02:02:20*EXetoC quit (Quit: WeeChat 1.0.1)
02:43:10*xenagi quit (Read error: Connection reset by peer)
02:43:27*xenagi joined #nimrod
02:44:02*will quit (Ping timeout: 245 seconds)
02:46:23*noam_ joined #nimrod
02:47:48*rpag quit (Quit: Leaving)
02:49:13*CARAM_ joined #nimrod
02:49:44*milosn_ joined #nimrod
02:54:00*noam quit (*.net *.split)
02:54:01*milosn quit (*.net *.split)
02:54:01*CARAM quit (*.net *.split)
02:54:02*vissborg quit (*.net *.split)
02:54:03*phI||Ip_ quit (*.net *.split)
02:54:03*Amrykid quit (*.net *.split)
02:54:03*EastByte quit (*.net *.split)
02:54:28*Amrykid joined #nimrod
02:54:40*phI||Ip joined #nimrod
02:58:06*CARAM_ is now known as CARAM
02:58:26*darkf quit (Read error: Connection reset by peer)
03:00:03*darkf joined #nimrod
03:04:25*EastByte joined #nimrod
03:06:19*vissborg joined #nimrod
03:35:43*bjz joined #nimrod
03:52:57*gokr quit (Ping timeout: 272 seconds)
04:11:27*xenagi quit (Quit: Leaving)
04:20:26*gokr joined #nimrod
04:42:20*nande quit (Remote host closed the connection)
05:06:06*saml_ quit (Ping timeout: 240 seconds)
05:15:40*bjz quit (Ping timeout: 250 seconds)
05:40:38*MyMind quit (*.net *.split)
05:40:39*comex quit (*.net *.split)
05:44:26*johnsoft quit (Ping timeout: 255 seconds)
05:45:10*johnsoft joined #nimrod
05:46:09*MyMind joined #nimrod
05:46:09*comex joined #nimrod
05:46:38*MyMind quit (Max SendQ exceeded)
05:48:05*MyMind joined #nimrod
06:04:44Varriountgokr: Very well written article. I like your 'conversational' writing style - it really brings personality to the article, and makes it interesting to read.
06:05:39Varriountgokr: I'd like to make some clarifications though - the nimrod code you show is written in something of a nontypical style.
06:09:34*darkf_ joined #nimrod
06:09:57*darkf quit (Ping timeout: 260 seconds)
06:11:24Varriountgokr: Procedure arguments without explicit types are implicitly given the 'expr' type, making them something like compile time templates/generics. Using procedures this way *might* lead to some odd behavior - I don't know any specifics, as untyped parameters are rarely used.
06:13:51VarriountThis actually brings up a question that should be covered in the style guide - when should implicitly typed parameters be used? (Style guide is at https://github.com/Araq/Nimrod/wiki/NEP-1-:-Style-Guide-for-Nimrod-Code if you want to have a look)
06:16:29AraqVarriount: they shouldn't be used unless you're hacking something together
06:16:57VarriountAraq: Why?
06:17:47Araqbecause I wanna change their semantics
06:18:17VarriountAraq: How do you want to change their semantics?
06:18:34Araqso that the type is inferred instead of generalized
06:19:27VarriountAraq: Inferred from the procedure body?
06:21:33Araqyup
06:21:42*darkf_ is now known as darkf
06:22:28VarriountAraq: That sounds rather complex. Whats the reason behind the change?
06:23:39Araqit's more intuitive and I think excessive generics lead to code bloat
06:26:00VarriountAraq: But from a user's point of view, the use of implicitly typed parameters - to construct code without verbose typing - hasn't changed.
06:26:53Araqthat's not true once you consider auto-complete
06:27:17Araqauto-complete works much better when not in a generic
06:28:23VarriountThat rather relies on auto-complete (as well as the whole CaaS functionality) working well. :3
06:28:29VarriountI also don't understand how one way leads to code bloat while the other doesn't.
06:31:13Araqproc foo(x, y: generic)
06:31:19Araqfoo(3, 2)
06:31:31Araqfoo(3.0, 2.9) # 2 instantations
06:31:43Araqproc bar(x, y: inferred)
06:31:56Araqbar(3,4) # calls float version
06:32:20Araqbar(3.0, 2.9) # calls float version, 1 "instantiation"
06:32:37Araqwell it's rather unrealistic
06:32:51Araqmost procs are only called once anyway
06:33:24VarriountI wonder how this works out according to type theory.
06:34:02VarriountAnyway, I have to go to sleep. Goodnight.
06:36:35Araqok thanks for the minimal mingw
07:01:10gokrVarriount: Ah, thanks! Yeah, its the first lines of Nim I have written :)
07:03:04gokrAraq: Ah, more type inference? Nice
07:05:30gokrI did wonder about some small details - like why I get away with "timeToRun(() => benchmark(10000))" but using proc syntax it ended up as "timeToRun(proc():int64 = benchmark(10000))" IIRC.
07:10:58Araq=> uses 'auto' as return type, i think
07:11:22gokrOk, I need to read up more in the manual :)
07:12:15gokrI experimented just now a bit... so ideally I would like timeToRun to be typed as say "timeToRun(bench: proc) :float"
07:12:27gokrSince it uses discard anyway (it doesn't care what the proc returns).
07:13:37gokrAnd then call it like say "timeToRun(proc() = discard benchmark(10))"
07:14:46gokrBut that doesn't fly. I get "expression 'bench()' has no type (or is ambiguous)" even though that line says "discard bench()"
07:15:00gokrSo clearly I need to read the manual more ;)
07:15:44gokrAraq: Very interesting language, I am a die hard Smalltalker and almost immune to getting excited about statically typed languages. But Nim has gotten my interest.
07:17:05*Trustable joined #nimrod
07:17:22gokrAnd I am amazed I didn't find it when I wrote my "summary of new langs since 2000" article.
07:17:33gokrGiven that its been around since at least 2008, right?
07:23:38Araqyeah
07:24:09*BlaXpirit joined #nimrod
07:25:54AraqNim is the underdog
07:26:55Araqthe underdog that prevents deadlocks at compile time, ... Rust cannot do this ... but *shrug* we have no one for marketing
07:27:35gokrWell, a bit of blogging can go a long way.
07:27:51gokrBtw, I asked if there was a planet nim, is there?
07:28:07Araqno idea what that even means ;-)
07:28:09Triplefoxplanet nim...what aliens live there
07:28:20gokrAnd oh, I am probably the millionth asking - why no regular mailing list?
07:28:24gokrI do hate web forums :)
07:28:49gokrOh, so a "planet" is typically a site called planet.nim-lang.org - which runs an RSS aggregator.
07:28:53Triplefoxoh i remember haxe going through that one...some people want an ml, some want forums...there is no agreement
07:29:37gokrI am 45 and... I dunno, we old dogs are like on ... 10-20 mailing lists and its IMHO a much more effective way to track.
07:30:10gokrBut no biggie, just curious.
07:30:44gokrExample of planet (mono): http://www.go-mono.com/monologue/
07:31:46gokrOr http://planet.smalltalk.org (which I just spammed with the Nim article apparently)
07:33:54gokrFurther, if one would like to spice up documentation - readthedocs.org seems to be quite popular in many open source projects these days. Uses Sphinx AFAICT.
07:34:07gokr(I recall someone asked about pdf manual)
07:35:07Araqthere is a pdf version of the manual
07:35:13Araqbut it currenly doesn't build anymore
07:35:48Araqwe don't need sphinx, we have our own docgen also based on RST
07:36:58gokrreStructuredText?
07:38:11gokrDuh, sorry, I ... thought Sphinx was something different - it also uses rST, ok, nice.
07:47:36gokrAraq: So much fun stuff to explore - just want to say thanks, I can see the amount of work and love put into this.
07:48:04Araqyou're welcome
07:48:12Araqbtw we REALLY need more coredevs
07:48:31Araqin fact, the situation got worse instead of better
07:48:37gokrReally?
07:49:39gokrHow so?
07:51:20Araqbecause both zahary and dom96 have no free time anymore these days
07:51:39gokrAh, got through school and got jobs? ;)
07:51:50Araqsomething like that
07:52:25gokrI have been active for a long time in the squeak community (and some ohters) and I recognize the pattern.
07:52:48gokrSo you got your own company going now or?
07:52:56Araqha, I wish
07:53:14gokrSo you got a day job not Nim-ish?
07:53:26Araqyeah
09:03:10*Ven joined #nimrod
09:12:21*dirkk0 joined #nimrod
09:18:29*Ven quit (Ping timeout: 272 seconds)
09:27:16*Ven joined #nimrod
09:30:26*Ven quit (Client Quit)
09:43:48*bjz joined #nimrod
10:10:52*EXetoC joined #nimrod
10:24:39*dirkk0 quit (Quit: Leaving)
10:56:24*kuzy000 joined #nimrod
11:04:53*xcombelle joined #nimrod
11:11:29*Lorxu quit (Ping timeout: 260 seconds)
11:25:44*kuzy000 quit (Remote host closed the connection)
11:41:53*BitPuffin joined #nimrod
11:43:56*BlaXpirit-UA joined #nimrod
11:45:41*BlaXpirit quit (Ping timeout: 244 seconds)
11:48:16gokrSo I installed Nimrod devel branch. Built fine and installed.
11:48:40gokrNow I wonder a) How do I generate all the docs? and b) How can I build c2nim? It fails finding llstream
11:58:51Trustablegokr: a) execute "koch web"
11:59:13gokrAaah
12:06:16gokrKinda fails on it though.
12:07:44*noam_ is now known as noam
12:16:16*will joined #nimrod
12:16:20*gokr quit (Quit: Leaving.)
12:18:41Trustablegokr: For me koch web works. What error do you get?
12:21:38*wan quit (Quit: WeeChat 1.0.1)
12:32:31*io2 joined #nimrod
12:45:40*darkf quit (Quit: Leaving)
12:54:27*jasondotstar quit (Quit: Leaving)
13:04:14*xcombelle quit (Quit: Quitte)
13:04:24*xcombelle joined #nimrod
13:13:31*bjz quit (Ping timeout: 244 seconds)
13:24:26*bjz joined #nimrod
13:29:59*jasondotstar joined #nimrod
13:31:06*untitaker quit (Ping timeout: 255 seconds)
13:37:03*untitaker joined #nimrod
14:20:49*saml joined #nimrod
14:23:35*gokr joined #nimrod
14:26:28*Matthias247 joined #nimrod
14:38:55*brson joined #nimrod
14:52:24*brson quit (Quit: leaving)
14:52:31*brson joined #nimrod
14:53:25*brson quit (Client Quit)
14:53:32*brson joined #nimrod
14:54:20*brson quit (Client Quit)
14:54:29*brson joined #nimrod
14:55:18*brson quit (Client Quit)
14:55:25*brson joined #nimrod
15:18:32*gokr_ joined #nimrod
15:22:05*gokr quit (Ping timeout: 260 seconds)
15:23:24*asterite joined #nimrod
15:24:10asteriteHi! I'm trying to use the json module. I copied the sample from here: http://nimrod-lang.org/json.html#parseJson,PStream,string with an `import json` at the top but I get `Error: undeclared identifier: 'parseJson'`… what am I doing wrong?
15:24:54asteriteSorry, the sample at the top of: http://nimrod-lang.org/json.html
15:27:51TrustableHi asterite
15:28:09asteriteHi Trustable
15:32:27Trustableasterite, I don't know what the problem could be, check your code for any typos
15:33:18asteriteCan you try it on your machine and see if it works?
15:42:08*nande joined #nimrod
15:47:30Trustableasterite: That's what I have done at first, after I read your message.
15:49:08asteriteHm, the file was named json.nim, I guess that was the problem… sorry
15:53:58*asterite quit (Quit: Leaving.)
15:55:34Trustableasterite: You found an issue. Good :)
15:59:46*kshlm joined #nimrod
16:00:56*xcombelle quit (Remote host closed the connection)
16:11:01*wan joined #nimrod
16:15:31*mko joined #nimrod
16:19:54*Keluri joined #nimrod
16:20:18*vendethiel joined #nimrod
16:22:15NimBotnimrod-code/nimforum new_async 3af3de2 Dominik Picheta [+1 ±1 -1]: Fix createdb and config filename.
16:33:02*jhc76 joined #nimrod
16:37:24*Matthias247 quit (Quit: Matthias247)
16:54:27*kshlm quit (Ping timeout: 245 seconds)
16:58:23Araqhi dom96
17:02:26TrustableHi Araq
17:03:25TrustableAraq: When a module imports itself, no error is thrown. Is this ok?
17:03:37Araqno, it's not
17:03:52Araqplease make a bug report
17:03:57Trustableok
17:04:36TrustableDo you think I should try to fix it?
17:09:15TrustableNew issue created: https://github.com/Araq/Nimrod/issues/1572
17:09:32Araqsure you can try
17:09:44Araqimporter.nim seems to be a starting point
17:10:24Araqmore important would be if you fix JS codegen bugs
17:10:31Trustablethx, I already took a look into the compiler source, but didn't found the place
17:11:00TrustableFor what is JS output needed?
17:11:32*asterite joined #nimrod
17:13:41*gokr joined #nimrod
17:15:23Araqfor people who like to compile Nim to JS
17:15:33Araqit's in compiler/jsgen.nim
17:16:08Trustableok
17:16:29Araqthere is even a comment that explains how it works
17:16:32Araq:P
17:16:34gokrTrustable: On master from github, running "./koch web" I get: Error: cannot open '../doc/exception_hierarchy_fragment.txt'
17:17:09*Jehan_ joined #nimrod
17:17:33Araqoh so master is broken again? :-/
17:17:43gokrTrustable: And on devel branch I get another error :) - then I see "Error: undeclared identifier: 'useSysAssert'" on processing system.nim
17:18:03Trustablegork: I have tested it only on devel.
17:18:19Trustable*gokr
17:18:34Araqgokr: if you have already Nim installed, the git version uses the installed version of the stdlib
17:18:43AraqI'm looking into this right now
17:18:44gokrgokr is short for Goran Krampe btw, might be easier to recall it :)
17:18:56gokrGöran in fact.
17:19:06Araqit is a common problem
17:19:07gokrBut I am not picky about those dots.
17:19:16gokrAraq: aha
17:19:35gokrI think I uninstalled and installed devel instead.
17:19:51gokrHmmm, is there a "learn the ropes" article somewhere? :)
17:19:55Araqwell the compiler tells you where it looks for the stdlib
17:20:02gokrI am a bit lost on all the tools etc.
17:20:14gokrBut I am learning.
17:21:23gokrBtw, I ran c2nim on a header file and it created something - but it put a "bug" marker in it.
17:21:30*Francisco quit (Ping timeout: 246 seconds)
17:21:51gokr"This should never happen..." etc :)
17:22:32Araqer what?
17:22:45gokr"This should never happen. It indicates a bug"
17:22:51Araqif it fails, how come it produces ouput?
17:23:04gokrHehe, let me check the header... perhaps its from there.
17:23:24gokrAh!
17:23:27gokrSorry, false alarm
17:23:36gokrIt was actually a comment in the header, sneaky.
17:24:52gokrSo... silly question time... I cloned out c2nim since it now lives in its own repo. Then... I just did "nimrod c c2nim" and... it failed to find llstream etc
17:25:01gokrWhich I later found in the compiler
17:26:02*Francisco joined #nimrod
17:26:14gokrSo I simply did "nimrod c -p:../Nimrod.devel/compiler/ c c2nim" and then it worked.
17:26:37Araqwell it depends onto how the compiler resolves $nimrod
17:26:58Araqthe config file for c2nim contains something like --path:$nimrod/compiler
17:27:07Araqso that c2nim can use the compiler's source code
17:27:16Araqbut for some reason it's fragile
17:27:16gokrAnd is that en ENV var?
17:27:31Araqno, the compiler knows how to resolve $nimrod
17:27:35gokrok
17:27:56gokrCan this be seen in "nimrod dump"?
17:28:28gokrBecause... it lists /usr/local/compiler which seems... wrong.
17:28:31gokrTo say the least.
17:29:32gokrAll the other paths start with "/usr/local/lib/nimrod/"
17:29:47Araqwell
17:30:03Araqif the binary is in /usr/local where are the compiler's sources?
17:30:07Araqnobody knows
17:30:22Araqso it has no chance of resolving this properly
17:30:45gokrSo did I do something wrong or is this something in flux?
17:31:06gokrnimrod is in /usr/local/bin btw
17:31:12Araqyeah whatever
17:31:31gokrSo I need to tell it ... via some cfg file where the sources are?
17:32:15Araqyour way of providing it via --path is just fine
17:32:25Araqdunno how we can solve it in general
17:32:51AraqI guess we can't. nobody says the compiler's sources are even installed somewhere
17:33:02gokrHmmm, I am not sure I grok this. Is the problem that we don't install the compiler sources?
17:33:08gokrAh, ok.
17:33:10Araqyes
17:33:26gokrSo... make them a babel package? :)
17:33:53gokrBtw, nimble and babel... relation?
17:33:59Araqthat's one solution I guess except that people frequently build babel from source
17:34:31Araqwhich requires a working Nim installation, but not the compiler's sources so it should be fine
17:34:41EXetoCgokr: babel is now nimble
17:34:52gokrI mainly meant that... c2nim obviously uses parts of the compiler modules - so those modules could be separately installable as a babel package, so c2nim can depend on them.
17:34:59gokrEXetoC: aha.
17:35:21Araqyeah sounds like a good solution, gokr
17:36:04gokrOk, gotta go pick up my daughter from her practice... later
17:40:53*asterite1 joined #nimrod
17:41:26*asterite1 left #nimrod (#nimrod)
17:42:03*Keluri quit (Quit: Page closed)
17:43:21AraqVarriount: looks like http://nsis.sourceforge.net/ is our best solution to get a web installer
17:43:25*asterite quit (Ping timeout: 260 seconds)
17:47:04*Matthias247 joined #nimrod
17:58:15*gokr_ quit (Ping timeout: 246 seconds)
17:58:41*gokr_ joined #nimrod
18:12:53*gokr_ quit (Ping timeout: 258 seconds)
18:13:24*gokr_ joined #nimrod
18:14:29*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
18:30:14*gokr_ quit (Ping timeout: 244 seconds)
18:31:28*gokr_ joined #nimrod
18:42:52dom96Web installer?
18:43:04dom96Araq: What do you have in mind?
18:43:08dom96I do like NSIS though.
18:51:35Araqdom96: installer that lets you select what to download
18:51:44Araqand puts the packages in the right dirs
18:52:17dom96That sounds great.
18:53:27dom96Araq: I did some coding during a Java lecture today :P
19:01:11*gokr_ quit (Ping timeout: 258 seconds)
19:01:27*gokr_ joined #nimrod
19:03:44*gokr_ quit (Read error: Connection reset by peer)
19:04:06*gokr_ joined #nimrod
19:09:56*io2 joined #nimrod
19:17:32*zahary joined #nimrod
19:21:59Jehan_dom96: Let me go out on a limb here and guess that you weren't coding in Java. :)
19:22:13EXetoCphp I think
19:22:56dom96Jehan_: haha you are correct.
19:24:06Jehan_I'm still trying to figure out whether it's good or bad that Java has become an introductory language in CS.
19:24:18Araqit's bad
19:24:24Araqin fact: it's even worse
19:24:32Araqso here you go. now you know ;-)
19:24:35dom96Python would be far better IMO.
19:24:43dom96Nim even better.
19:25:24dom96There is so much crap in Java that they are teaching us which you do not have to worry about in Nim.
19:25:25gokrI have used NSIS a long time ago, it was very nice.
19:25:33Jehan_Araq: Well, I've seen C as an introductory language, so ...
19:25:40dom96"You must make sure that 'public' is all lower case"
19:25:52Jehan_The thing is, Java has at least most of the basics of a modern programming language.
19:25:54dom96"You must make sure you have a main method"
19:26:10gokrWhen I started CS back in 1990 we started out with Scheme. Great course.
19:26:16Jehan_But yeah, public static void main is crazy.
19:26:35EXetoCintroduction with C++. win
19:26:41Araq"modern" is relative. I would argue that C++ is more modern
19:27:13Jehan_Araq: I'd argue against that. :)
19:27:18gokrThe problem with Java and C++ and... well, several languages, is that they have too much noise.
19:27:32Jehan_No module system, not even an option for automatic memory management.
19:27:34gokrSo for that only reason they kinda suck at teaching.
19:27:35Araqwell I'm not sure if I'm serious here
19:28:15Jehan_gokr: I don't disagree.
19:28:16gokrAnd for a very long time Java didn't even have closures. It does now... right?
19:28:31gokrIt was a while since I coded Java - though I have done a lot of it.
19:28:38Jehan_I like Python as an introductory language for non-computer scientists. Ruby probably, too.
19:28:59Jehan_gokr: Java8 does.
19:29:10gokrRight, I read about that somewhere.
19:29:19gokrIt took a while to shoe horn them in though :)
19:29:35Jehan_You can kinda sorta use anonymous inner classes as a substitute. With limits.
19:30:02Jehan_I'm still not sure what my preferred introductory language for CS students would be.
19:30:19Jehan_Well, CS students need to be able to learn more than one and pick up additional languages on demand.
19:30:25Jehan_But you have to start with something.
19:30:29EXetoCscheme?
19:30:49Jehan_I know a friend of mine put her foot down and got to use Scala for her undergraduate CS course.
19:31:06dom96Question is should CS students start with something nice and easy or something difficult.
19:31:11dom96i.e. Python or C?
19:31:22Jehan_Her rationale was that as a multi-paradigm language it allowed her to teach all the basic concepts without juggling languages.
19:31:24dom96Actually I should say high level vs. low level.
19:31:28dom96Not hard vs easy.
19:31:37Jehan_dom96: High level.
19:31:46Jehan_They'll get plenty of low-level stuff later on.
19:31:49gokrScheme was a very good language for us.
19:32:02gokrThat MIT course... don't remember its name, great one. Is online now.
19:32:06Jehan_But there are plenty of first semester students who struggle with concepts such as assignment.
19:32:32Jehan_gokr: Structure and Interpretation of Computer Programs?
19:32:47gokrThe nice part with that course was not the language itself - it was the fact that it focused on techniques. You know, recursion etc
19:32:49gokrExactly.
19:32:58AraqI think they should start with F#, Ocaml or Nim :-)
19:32:59gokrSo the language was just a "vessel".
19:33:12Jehan_My problem with scheme as an introductory language is that in many ways it's too limited.
19:33:32gokrAnother really good thing with it was that noone was ahead.
19:33:37gokrMore or less.
19:33:44Jehan_Araq: Yeah, OCaml would work. I don't think I'd use Nim as an introductory language (no offense, that's not what it seems to be designed for).
19:34:15Araqthe problem with Java is IMHO that it is too simple so you end up teaching APIs instead of constructs
19:34:18gokrIMHO the problems arise when you "fight the language" instead of learning concepts.
19:34:22Jehan_gokr: Yeah, that's a common concern. Plus, people don't incorrectly think "I know all that already".
19:34:40Araqbut APIs are really boring and frequently become outdated
19:35:04gokrThere is a multi paradigm lang called... hmmm. It was used here in Sweden... argh... Mozart I think.
19:35:04Jehan_Araq: I'm generally not a fan of teaching specific technologies in undergraduate CS.
19:35:16Araqwell I guess you teach them algorithms in Java
19:35:22Jehan_No matter what the technology is. The language should be a vehicle for teaching more general concepts.
19:35:31EXetoCcode monkey training
19:35:31gokrexactly.
19:35:33Jehan_gokr: Oz.
19:35:40AraqJehan_: exactly.
19:35:44gokrHmmm, was it Oz? Perhaps it was.
19:36:15Jehan_gokr: Mozart is the reference implementation of Oz.
19:36:29gokrAh
19:36:54Jehan_There's also Ozma, which is Scala + Oz concepts on the Mozart VM.
19:38:21gokrAnyway, SICP was superb.
19:38:50gokrAlthough it was ... 24 years ago. Ehrm... shit I am old.
19:38:56Jehan_gokr: It's really good for a certain type of student, but doesn't work so well for others.
19:39:09gokrYeah, probably true.
19:39:31gokrBut this was after all the 4.5 years CS engineering education.
19:39:37gokrNot a 1-2 years CS thing.
19:39:42Jehan_I know because I had to help a few students who were struggling with the approach. :)
19:39:43EXetoC25 are you?
19:39:48gokrHehe
19:39:48EXetoCno you must be slightly older then
19:39:57gokrSlightly older than 25. :)
19:40:41gokrI am 45. Two daughters, both asleep now. ;)
19:41:15gokrSo... Nim was born in 2008
19:41:19gokr--ish?
19:41:50gokrJust a bit curious how I managed to miss it all these years. Even in my article about languages after 2000.
19:41:50Araqit's hard to say but official year is 2006
19:41:55gokrOk
19:42:11gokrI am a language fetishist.
19:42:26gokrAlthough since a very long time a Smalltalk diehard.
19:43:16Jehan_Speaking about OCaml, I still think a syntax for generic modules would make a nice addition to Nim. :)
19:43:17gokrBut Nim did catch my interest the other day, although I tend to be draw to minimalistic languages - and Nim... doesn't really land there ;)
19:43:35Jehan_gokr: I adore Smalltalk, except for the image thing.
19:44:06gokrWell, after a bunch of years the "image thing" ... you start realizing the effects it has.
19:44:13AraqI used to date it back to 2004 but that's only what the lexer is from
19:44:45Jehan_gokr: Yeah, it requires me to learn duplicates for all the tools I normally use. For each implementation. :(
19:45:05Araqwell I always had compiler-related modules lying around ...
19:45:24gokrI always wonder why so few other languages don't try to be reflective like Smalltalk. The environment creates such an immense productivity.
19:46:02Araqfunny I don't like smalltalk really but I like the "image thing" idea
19:46:19Jehan_Araq: I like the idea, just not the actual experience.
19:46:21gokrJehan_: Well, if you really use the Smalltalk environment for live interactive coding - then you start wondering why everyone else is sitting in their "dead files".
19:46:30Jehan_Starting with not being able to use the editor I'm accustomed to.
19:46:59Jehan_gokr: Been there, done that. It just … doesn't have the appeal.
19:47:07Jehan_Different things work for different people.
19:47:09gokrThe editor thing is of course "solvable", but for Smalltalk specifically the methods tend to be 20 lines max. Browsers and cross reference tools etc is what you really use.
19:47:20gokrJehan_: Yeah, sure.
19:47:48Jehan_gokr: That's a convention that I prefer to stick to with any language. It's not about the length of methods.
19:47:49gokrBut I think most people "dismissing" it - does it for the wrong reasons. Typically because they didn't feel comfortable - due to other habits.
19:48:17Jehan_I think that lack of comfort is a perfectly good reason.
19:48:19gokrMost Smalltalkers know lots of programming languages - and don't share this sentiment.
19:48:36gokrThen of course, you can always go GNU Smalltalk :)
19:48:48Jehan_gokr: I've tried it. :)
19:49:02Jehan_It's actually pretty nice, but it's another one-person project.
19:49:07gokrYeah
19:49:16gokrThe current strongest open source Smalltalk is Pharo.
19:49:21gokrDerivative from Squeak.
19:49:32Jehan_Ruby is my command line Smalltalk derivative of choice.
19:49:42Jehan_I have Pharo sitting here on my machine, I know.
19:50:04gokrRuby mostly just pisses me off ;)
19:50:18gokrBut that's because I am a Smalltalker.
19:51:29gokrJehan_: Where are you from?
19:51:52Jehan_My main problem with Pharo is that text input is too sluggish. At least on a Mac.
19:52:21Jehan_gokr: Germany. Though I lived about 15 years of my life abroad.
19:52:23gokrYeah, the Morphic UI framework has kinda clogged up completely. IIRC Igor and some others are reimplementing it all.
19:52:35gokrThe text stuff I mean.
19:53:05Jehan_gokr: Yeah, but the thing is, when typing a single character is close to breaking the .1 second reponsiveness threshold by itself, that's too slow for editing.
19:53:20gokrReally? That sounds a bit odd.
19:53:48Jehan_Okay, it's not quite .1 seconds, but it's not instant, either.
19:54:27gokrHmmm, not really something I recognize.
19:54:34Jehan_Atom has (or at least had) the same issue.
19:54:37gokrSlightly off topic for this channel though :)
19:55:03Jehan_I think any channel has a bit of off-topic chatter. As long as nothing else is going on ...
19:55:14gokrI am working with Squeak and Pharo btw. Our system is written fully in Squeak.
19:55:28gokrAnd I have been very active in that community since... like forever.
19:56:04Jehan_gokr: What I really like about Pharo and Squeak is the direct UI integration. Even if Morphic is not my preferred UI.
19:56:39gokrYeah, it dates back to the original ideas around Smalltalk. Single individual mastery etc.
19:56:43Jehan_But it means that UI stuff is a whole less of a lot of a pain than anywhere else.
19:57:05Jehan_Hmm, I think I scrambled that sentence, but you get the idea.
19:57:13gokrYes, and another neat effect is that the tools you build - all run bit identical on all platforms.
19:57:22gokrWhich is a huge benefit for a small community.
19:57:27gokrSure.
19:57:42Jehan_gokr: That's not actually a benefit in my world. UIs are different on different platforms.
19:57:58gokrThey are - for apps. But for dev tools they don't need to be.
19:58:36gokrSo much history in the UI world dating back to Smalltalk.
19:59:24gokrYou know - it was Smalltalk that was demoed to Steve Jobs at Xerox PARC back in 198... 1983 I think.
19:59:37Jehan_Yeah, I'm very familiar with the history.
19:59:40Araqyes. we know. ;-)
19:59:45gokrSorry :)
19:59:56Jehan_Lots of programming language nerds in this channel. :)
20:00:02gokrDid you also know that Steve was obsessed with smooth scrolling back then even?
20:00:33gokrHe asked Dan Ingalls (who was demoing) if he could make the scrolling smooth (it was line by line) - and Dan hacked it right during the demo to be smooth.
20:00:55Jehan_I once did a list and figured out that I've used somewhere between 30-40 different programming languages in anger (i.e. for serious work) at one point or another. If you count different assembly languages and substantially different LISP dialects.
20:01:28gokrYeah, similar count here, perhaps a tad less, around 25 I think.
20:02:15gokrBut its very interesting IMHO to cross boundaries.
20:02:21Jehan_Oh, agreed.
20:02:47Jehan_These days, I'm strongly gravitating towards multiparadigm languages myself.
20:02:53gokrPersonally I would love something like Nim - but with the interactive power environment and productivity of Smalltalk.
20:03:04Jehan_I blame Jim Coplien for that. :)
20:03:20gokrAlthough I always get nervous with languages with too many mechanisms.
20:03:39gokrI truly hate having to fight the language.
20:04:06Jehan_gokr: Yeah, I don't mean to imply that I want the whole kitchen sink.
20:04:22Araqyeah but I fight languages because of missing features
20:04:30gokrNo, I was actually thinking about Smalltalk vs Nim.
20:04:37Jehan_But in my experience, every single-paradigm language does about 80% great and 20% horribly.
20:04:49gokrSmalltalk code I can always read and understand more or less immediately.
20:05:15gokrWhen a language has multiple mechanisms like generics, macros and god knows - that intersect - it can get insane pretty quickly.
20:05:18Jehan_The thing I always loved about Smalltalk were the (syntactically) light-weight closures.
20:05:37gokrYeah, and having them from the start - so that they are everywhere in the libs.
20:05:40Jehan_Smalltalk is really one of the first multiparadigm languages (OO + higher order functions).
20:05:58gokrAdding them afterwards isn't really that rewarding if the libs are already set in a style not using them.
20:06:07Jehan_Yeah.
20:06:26gokrAnd funny enough - in Smalltalk they are so natural - most Smalltalkers don't even know what a closure is.
20:06:32Araqgokr well that's a fair criticism of Nim and also the reason it takes so long to get stable
20:06:35gokrWell, many don't.
20:06:44Jehan_That's one of my main beefs with Ruby, too: That the syntax becomes cumbersome if you have more than one closure per call.
20:07:06gokrNim has naked lambdas now - why naked?
20:07:34gokrPerhaps its a logical choice when you don't have the "naked" keyword syntax as Smalltalk as.
20:07:36gokrhas.
20:08:35Araqnot sure what you mean but 'do' exists exactly for the reason to be able to pass multiple blocks to a macro
20:09:05Jehan_gokr: Not familiar with the term "naked lambda"?
20:09:06gokrWhat I mean, or Jehan?
20:09:34gokrOk, so... In Nim I can do fun( (x) => x*x)
20:09:39Araqand saying that Smalltalk is much simpler kind of misses the point. Smalltalk is dynamically typed.
20:09:50gokrSo the "(x) => x * x" is naked.
20:09:57Araqit's easy to be simple when you go the dynamic typing route
20:09:57gokrIt doesn't have anything around it.
20:10:07Araq=> is a macro
20:10:09Jehan_Oh, what I call "syntactically lightweight".
20:10:16Araqnot a builtin syntax
20:10:40gokrI didn't come up with the term - and to be frank - I am not sure I use it correctly. I saw it in C# first I think.
20:11:04Jehan_Speaking of which, this syntax still has issues with closures that don't return a value, I think.
20:11:22Jehan_You have to add -> void explicitly.
20:11:30Araqit's not a syntax. it's simply a binary operator implemented as a macro.
20:11:38Jehan_Araq: I know.
20:11:45Jehan_Same difference.
20:11:53Araqit's not even in system.nim
20:11:58Jehan_I still have to explicitly specify the return type for the case where there's no return type.
20:12:06Jehan_I think it's auto inference going awry.
20:12:10gokrWell, "easy" it may be - but Smalltalk was refined over 10 years I think. Alan didn't really like the result though.
20:12:33gokrAraq: ok
20:13:25gokrAnyway, a light syntax for closures is very important IMHO. So that they are natural to use. Although I suspect the Nim libraries don't use much of them or?
20:13:49gokrSorry, I need to study more Nim. ;)
20:14:11Jehan_gokr: Actually, it's pretty lightweight if there's one closure that doesn't have parameters.
20:14:29Jehan_And is not too bad otherwise, too.
20:16:32Jehan_See https://bitbucket.org/behrends/nimr/src/d33ec14d7f3687e2fda5e73786e5620d3fc48279/nimr.nim -- namely, the lock procedure in line 42 and how it's used in line 76.
20:23:04*io2 quit (Ping timeout: 250 seconds)
20:27:45EXetoCno 'do' needed?
20:28:05EXetoCguess not
20:29:23Jehan_EXetoC: No. Not if the procedure doesn't have parameters.
20:30:30Jehan_Mind you, I only found that out a couple of months ago myself. :)
20:54:53*bjz_ joined #nimrod
20:55:27*bjz quit (Read error: Connection reset by peer)
20:55:55TrustableAraq and all: Suggestion for new compiler error: errSelfImport: "Import of itself is not allowed" OK?
20:56:22Jehan_The message sounds a bit confusing to me.
20:56:43Jehan_I'd suggest something like: "A module cannot import itself."
20:57:05Trustablethx. great.
20:58:05Jehan_Perhaps even: "A module is trying to import itself", which would describe what's going on rather than what is forbidden. Not sure which is better.
20:58:42TrustableI like your first one better
20:58:58EXetoCand the name of said module
20:59:01AraqTrustable: no
20:59:11Araqjust use errGenerated
20:59:24EXetoCthough you have a line number already
20:59:28Araqthese other err* messages are deprecated
20:59:34TrustableAraq: ok
21:01:22TrustableFile and line number is also shown
21:05:06TrustableHow can I split a PR?
21:06:22Trustablehttps://github.com/Araq/Nimrod/pull/1571 contains 2 different fixes, I don't know how to split them
21:13:21*Matthias247 quit (Read error: Connection reset by peer)
21:16:08Jehan_I'd say, "git reset --soft HEAD^", commit the changes individually again, push the branch again.
21:17:21Jehan_"git reset --soft HEAD^" is how you "uncommit" changes in git.
21:18:43TrustableJehan_: But github merged my 2 commits automatically to one PR. How can I avoid this?
21:19:04Jehan_Oh, I see. So you want two different pull requests?
21:19:07EXetoCby using separate branches
21:19:07Trustableyes
21:19:13Jehan_What EXetoC said.
21:19:17Trustableok
21:19:42Jehan_First, do git reset --soft HEAD^ to uncommit, then commit the first set of changes.
21:19:56Jehan_Then … ugh, let me think about that (sigh, git).
21:20:54Jehan_Problem is that you then want to do git checkout to go back, but that will also reset the checkout.
21:21:11Jehan_I think you'd need to stash the remaining changes, use git checkout, then unstash them.
21:21:37Jehan_"Why I'm not a huge fan of Git", chapter XXVII.
21:21:41*io2 joined #nimrod
21:27:58EXetoCwhat would you do with some other VC software?
21:28:23*johnsoft quit (Ping timeout: 240 seconds)
21:29:10*johnsoft joined #nimrod
21:29:33Jehan_Depends? Which one? Bazaar? Mercurial? Fossil?
21:30:41Jehan_Bzr: bzr branch to fork, bzr uncommit in both branches, selectively commit one or the other set of changes in each branch.
21:31:24EXetoCare there fewer steps or is it more intuitive?
21:31:33Jehan_More intuitive.
21:32:27Jehan_Basically, you duplicate the branch (does not actually duplicate any repo data), then adjust each branch individually.
21:32:51EXetoCok
21:33:17Jehan_I'm still miffed at Canonical for neglecting Bzr, which still has the sanest conceptual model of any DVCS I know.
21:33:57Jehan_But because they're not even keeping up with bug and performance fixes, it's not really an option except for personal projects.
21:35:14Jehan_Mercurial: "hg uncommit", "hg commit <whatever you need for part 1>", "hg update .^", "hg commit <whatever you need for part 2>"
21:36:58Trustableoh bad, another time merged
21:38:12Jehan_Git is superior when you want to hack your repository, of course. But it often doesn't allow you to do the straightforward stuff in a straightforward fashion.
21:38:23*BlaXpirit-UA quit (Quit: Quit Konversation)
21:39:57TrustablePR problem solved :) 2 PRs now ready
21:43:24*will quit (Read error: Connection reset by peer)
21:44:16*melgen joined #nimrod
21:44:53Trustabledom96: please merge https://github.com/nimrod-code/Aporia/pull/59
21:55:55*BitPuffin quit (Ping timeout: 255 seconds)
22:09:40AraqTrustable: meh, string comparison? use the fileIndexes instead
22:09:51Araqthat's what they are for
22:10:05Trustableok, I can try
22:21:04TrustableAraq: done
22:21:24Araqadded a test case to the test suite too?
22:23:14TrustableAraq: I don't know how to. But I added an example program in the issue https://github.com/Araq/Nimrod/issues/1572. It's only 2 lines.
22:23:50Araqwell it's not hard
22:25:09Araqtests/misc/tinvalidnewseq.nim
22:25:14TrustableAraq: ok, I will look
22:25:17Araqtake this as an example
22:25:31Araqbut put your test in tests/modules
22:25:58Araqit's literally just adding a file with some special discard header
22:28:57TrustableAraq: file is added, how can I test it?
22:30:20Araqnim c -r tests/testament/tester cat modules
22:30:51Araqiirc you can also run a single test instead of a whole category but I never do that so I forgot how
22:32:42TrustableAraq: PR updated with test case
22:36:43*Lorxu joined #nimrod
23:00:41Trustable4 PRs done for today :)
23:02:20Araqfixed a JS bug?
23:02:41Araqbut great work!
23:02:56AraqI will merge later 0.9.6 is actually frozen
23:04:56*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
23:14:16*bjz_ quit (Ping timeout: 260 seconds)
23:20:21*quasinoxen quit (Ping timeout: 260 seconds)
23:21:48AraqVarriount: some more research shows that inno setup might also be up for the task
23:38:35*sdw quit (Read error: Connection reset by peer)
23:40:55*quasinoxen joined #nimrod
23:41:23VarriountAraq: Or we could write the installer in Nim...
23:54:22*darkf joined #nimrod
23:55:10AraqVarriount: nah
23:55:30Araqwe won't produce a professional installer that people are used to
23:56:03*Jehan_ eagerly awaits the first C compiler written entirely in NIm. :)
23:57:19Araqoh yeah ... where is mat3?
23:57:42EXetoCand then a nim compiler written in C
23:59:17VarriountAraq: Regarding your earlier remark about core developers, I'm surprised I still count. :3
23:59:44AraqVarriount: I used the console installer of SmartEiffel back in the days
23:59:57Araqtrust me, you don't want that