<< 13-10-2013 >>

00:07:47*DAddYE joined #nimrod
00:11:50*DAddYE quit (Ping timeout: 240 seconds)
00:16:09Varriount1,986 lines down, about 13,000 lines left.
00:18:04AraqI thought the header is only 800 lines
00:19:31VarriountI'm going through winbase.h right now
00:19:44VarriountI finished that other one a while ago.
00:19:54Araqincluding examples?
00:20:09VarriountExamples of what?
00:20:20Araqhow to use COM with Nimrod?
00:20:31Araqthe disphelper comes with lots of nice examples
00:21:04VarriountUse c2nim on the headers of the examples?
00:21:23VarriountOr straight out translate the examples by hand?
00:21:32Araqdunno whatever works better
00:21:43Araqby hand I suppose
00:21:56Araqas you care about nice readable idiomatic nimrod code for them
00:22:21VarriountSpeaking of which, is there a style guide or anything for nimrod?
00:26:20Araqnot really there is only http://nimrod-code.org/apis.html
00:27:38Araqand also http://nimrod-code.org/intern.html#coding-guidelines
00:35:14AraqI have to sleep now. good night
00:35:37*DAddYE joined #nimrod
00:48:57*ltbarcly joined #nimrod
00:48:59*ltbarcly quit (Client Quit)
00:59:58dom96well babel officially works on arm :D
01:02:51VarriountYay?
01:03:30*Varriount throws confetti around dom96
01:03:34dom96lol
01:06:58*q66 quit (Quit: Leaving)
01:24:46NimBotnimrod-code/packages master 9c3c280 achesak [+0 ±1 -0]: Added extmath.
01:24:46NimBotnimrod-code/packages master ca83b7d Dominik Picheta [+0 ±1 -0]: Merge pull request #26 from achesak/master... 2 more lines
01:45:37*gurug33k quit (Remote host closed the connection)
01:58:26*BitPuffin quit (Ping timeout: 264 seconds)
02:22:28*brson_ joined #nimrod
02:26:14*brson quit (Ping timeout: 240 seconds)
03:00:44*Ricky_Ricardo joined #nimrod
03:00:49*ltbarcly joined #nimrod
03:00:57*ltbarcly quit (Client Quit)
03:52:14*DAddYE quit (Remote host closed the connection)
03:52:47*DAddYE joined #nimrod
03:57:16*DAddYE quit (Ping timeout: 245 seconds)
04:04:05*OrionPK quit (Quit: Leaving)
04:16:31*Varriount quit (Read error: Connection reset by peer)
04:38:26*Ricky_Ricardo quit (Quit: www.rickcarlino.com)
04:44:16*brson_ quit (Quit: leaving)
05:12:43*ltbarcly joined #nimrod
05:12:50*ltbarcly quit (Client Quit)
05:56:16*Varriount joined #nimrod
06:45:31*Endy joined #nimrod
07:21:11*Endy quit (Ping timeout: 272 seconds)
07:24:31*ltbarcly joined #nimrod
07:24:31*ltbarcly quit (Client Quit)
07:43:33*wlhlm joined #nimrod
07:51:05*io2 joined #nimrod
07:54:06*Associat0r quit (Quit: Associat0r)
08:00:11*h3lm joined #nimrod
08:03:02*wlhlm quit (Ping timeout: 240 seconds)
08:12:28*h3lm is now known as wlhlm
08:38:25*Endy joined #nimrod
08:57:53*dyu joined #nimrod
09:27:59*q66 joined #nimrod
09:30:38*Endy quit (Ping timeout: 240 seconds)
09:36:19*wlhlm quit (Ping timeout: 260 seconds)
09:36:21*ltbarcly joined #nimrod
09:36:23*ltbarcly quit (Client Quit)
09:45:53*Endy joined #nimrod
09:46:41*melba joined #nimrod
09:51:17Araqhi melba welcome
09:51:26melba:)
09:52:09io2melba comes from ##C++ and he likes pythy syntax, so I told him that nimrod is python done right :P
09:52:30io2melba: Araq is the designer of the language
09:52:39io2and dom96 is a nimrod wiz
09:53:25Araqand I thought Nimrod is C++ done right ;-)
09:53:34io2lawl
10:34:00dom96'morning
11:28:44*silven quit (Ping timeout: 256 seconds)
11:31:14*silven joined #nimrod
11:35:47*silven quit (Ping timeout: 272 seconds)
11:37:05*wlhlm joined #nimrod
11:37:42*silven joined #nimrod
11:42:28*silven quit (Ping timeout: 240 seconds)
11:48:12*ltbarcly joined #nimrod
11:48:16*ltbarcly quit (Client Quit)
11:50:50*silven joined #nimrod
12:34:35*[1]Endy joined #nimrod
12:38:06*Endy quit (Ping timeout: 245 seconds)
12:38:06*[1]Endy is now known as Endy
12:38:55*BitPuffin joined #nimrod
13:11:18*dyu quit (Ping timeout: 256 seconds)
13:24:27*dyu joined #nimrod
14:00:04*ltbarcly joined #nimrod
14:00:09*ltbarcly quit (Client Quit)
14:11:45*OrionPK joined #nimrod
14:30:26*filwit joined #nimrod
14:30:36filwithi folks
14:31:35Araqhey filwit
14:37:49*Associat0r joined #nimrod
15:01:22*gdos joined #nimrod
15:04:04dom96hey filwit, what's up?
15:04:21Araqdom96: filwit made an aporia icon for you ;-)
15:05:29filwithey dom96, not much, just wanted to try out generics real quick (but i'm guessing they're not in the Arch repo build, so i'm building Nimrod)
15:06:30filwitAraq, dom96: later i'll design it, but i'll only be around for another half hour or so
15:07:19dom96filwit: That would be great, thanks.
15:15:03filwityou guys see the phoronix news about this: http://www.polygon.com/2013/10/12/4826190/linux-only-needs-one-killer-game-to-explode-says-battlefield-director ?
15:15:10filwitkinda cool
15:18:13*rel42 joined #nimrod
15:18:16Araqdunno they keep saying things like that for decades now
15:18:52filwithave they? i've only been using linux for the last 2-3 years
15:19:03Araqyes
15:19:10Araqit's always "almost there"
15:19:16filwitwell.. don't destroy my dreams man..
15:19:16Araqhi rel42, welcome
15:19:24rel42hello!
15:19:49filwithi
15:21:51dom96valve just needs to make HL3 a linux exclusive.
15:24:23shodan45dom96: hah
15:24:42filwitdom96: yeah that would be awesome, haha
15:24:47rel42yeah, and destroy their good reputation
15:24:53filwitbut not going to happen, sadly
15:25:50filwitand really, i don't like the idea of Linux screwing over Windows gamers just for popularity
15:26:05filwiti just hope they make HL3 sometime in the next decade
15:26:20shodan45I've been using linux since about 1999, and as my primary OS since 2002-ish, so for me linux is "already there" ;)
15:26:30rel42didn't valve file for a trademark for hl3, or was that fake?
15:27:08filwitno idea
15:27:30shodan45hmm, maybe make HL3 free but only for linux
15:28:06shodan45and cost money for windows & mac
15:28:45rel42eh, never mind what i just said, turns out it was fake: http://www.valvetime.net/threads/fake-european-half-life-3-portal-3-trademarks-filed.243962/
15:30:46EXetoC2014 will be the year of linux. that's a fact
15:31:10rel42yearOfLinux = getCurrentYear() + 1
15:31:10AraqEXetoC: people say the same about nimrod ;-)
15:31:13EXetoCor maybe some time before 2025
15:34:22*rel42 quit (Quit: Leaving)
15:40:08*gdos quit (Read error: Connection reset by peer)
15:40:40shevyhehe
15:51:19*gdos joined #nimrod
16:01:23*filwit quit (Quit: Leaving)
16:11:58*ltbarcly joined #nimrod
16:12:01*ltbarcly quit (Client Quit)
16:15:56*ltbarcly joined #nimrod
16:27:01*ltbarcly quit (Quit: Computer has gone to sleep.)
16:27:30VarriountMeep!
16:30:17*dyu quit (Quit: Leaving)
16:40:59VarriountAnyone know if there's a more specific type I can specify, other than float, for a type that should be positive and a float?
16:42:39Araqtype PositiveFloat = range [0.0 .. 100.0]
16:42:53AraqI don't think this is valid for now:
16:42:58VarriountIt isn't
16:43:01Araqtype PositiveFloat = range [0.0 .. Inf]
16:43:12Varriount'range' only accepts ordinals.
16:43:22Araqreally? hmm
16:43:35Araqsounds like a bug then
16:43:52Araqwell tbh float ranges are not yet tested at all
16:44:00Araqit's more of a planned feature
16:44:18VarriountNo big deal.
16:44:40VarriountAraq, have you thought of any methods for more.. explicit importation?
16:45:07Araqnimrod's module system is complete now with 0.9.3 afaict
16:45:19Araqfrom foo import bar, gah, ugh
16:45:38BitPuffinAraq: Would you say that Nimrod's metaprogramming stuff is as powerful as that found in clisp?
16:45:56BitPuffinor even moaar
16:46:28Araqnimrod's metaprogramming is more powerful than anything except "Kernel" the language based on fexprs
16:46:32VarriountYes, but if you have a type with a bunch of associated methods, you have to either implicitly import the entire module, or explicitly import all of them.
16:47:07Araqimport foo except this, that
16:47:51VarriountWhat would be the best way to import a type, and all it's associated methods, from a module?
16:48:03Araqimport foo
16:48:18VarriountBut doesn't that only import the type?
16:48:29Araqthere is no notion of "all associated methods"
16:49:01VarriountI mean, procedures for which the target type is the first argument.
16:49:13Araqyeah I know what you mean
16:49:22Araqit's not a concept in the language though
16:50:53VarriountHrm.
16:51:10Araqand I don't get this widely spread misguided idea of "namespace pollution"
16:51:36Araqnimrod is optimistic, import everything, deal with the conflicts should the need arise
16:51:48Araqand the need very rarely arises
16:52:08VarriountAraq, just the other day, BitPuffin had a problem whereby he was calling an accidentally import procedure on a type, and getting errors.
16:52:18Varriount*imported
16:53:11Araqthat's a problem with the 'immediate' macros, not a problem with the import mechanism
16:53:35Araqand it would only be important if it leads to a bug
16:53:57VarriountAh well. *shrug*
16:54:20Araq"hard to understand compiler errors" are not important at this stage
16:54:35Araqand the error messages are often very good anyway
16:54:48VarriountTrue.
16:56:31VarriountOh, by the way, your snippet for a natural float worked.
16:56:48VarriountThe code I was using used float32's, I guess that was why
16:57:25BitPuffinAraq: how so?
16:57:59AraqBitPuffin: because immediate macros do not participate in overload resolution
16:58:47Araqotherwise the compiler would easily have resolved the conflict for you
16:59:32BitPuffinAraq: I was war referring to how is nimrod more powerful than anything except Kernel?
17:00:35BitPuffinAnd Kernel is a lisp dialect haha
17:00:52Araqyeah just like ML is a Lisp dialect
17:01:07Araqin other words: I disagree
17:01:24AraqKernel doesn't even exist as an implementation
17:01:36BitPuffinOkay but back to the real question, how is it more powerful than everything?
17:01:45BitPuffinhttp://klisp.org/ ? looks like an implementation to me
17:03:22Araqinteresting
17:03:56Araqok so now it exists :P
17:04:49BitPuffinthat's nice
17:04:59BitPuffinapparently just an interpreter as far as I can see
17:05:17AraqBitPuffin: as far as I'm aware Nimrod is the only language which supports term rewriting macros with side effect and aliases analysis
17:05:26BitPuffinwritten in C
17:05:33Araqso in this sense it's more powerful than the others
17:06:38BitPuffinAraq: Hmm, yeah I haven't heard of any other languages that do that either. But at the same time, there might be stuff that lisp can do that nimrod can't for example? I don't know yet because I don't know much lisp
17:10:29capiscewell, there are reader macros for instance
17:10:39Araqthere are lots of things you can do in Lisp that you can't do directly in Nimrod due to its static typing
17:11:02Araqit's most obvious when you're designing a callback system
17:11:54Araqstrictly speaking however dynamic typing is a subset of static typing ...
17:13:01BitPuffinI can imagine one benefiting from learning lisp before using nimrod, as there is more lisp documentation out there that would help you get familiar with advanced meta programming and creating DSLs
17:13:14Araqso ... it's a complex question with a simple answer: Nimrod is more powerful because I say so :P
17:13:27BitPuffinHaha! Well fair enough
17:14:04BitPuffinperhaps you wouldn't have created nimrod otherwise :P
17:14:10Araqcapisce: reader macros are almost there in the form of source code filters
17:14:22Araqbut fair enough, we don't have them
17:14:53Araqit's easy enough to use a """string""" and parse it at compile time if you like to use a grammar that's not compatible with Nimrod's
17:20:07capisceright
17:26:59VarriountI wonder how hard it would be to make a Nimrod type that mirror's python's int...
17:27:28VarriountFor those that don't know, python's ints have no limits, except for memory
17:30:35AraqVarriount: it's called "bignum" and there are lots of implementations around
17:30:42Araqhowever none for nimrod :-/
17:30:51Araqso yeah, excellent next project for you
17:31:56VarriountRight now, my two main projects are polishing up the disphelper wrapper, and implementing neil frasiers diff-match-patch in nimrod.
17:32:16*io2 quit (Ping timeout: 245 seconds)
17:32:17Araqdiff-match-patch is an excellent project too :-)
17:33:05VarriountAraq, it's also a very helpful library.
17:33:34VarriountWhich I am using for real-time collaborative editing.
17:58:32*io2 joined #nimrod
18:28:18BitPuffinAraq: nimrod needs something like this http://youtu.be/HM1Zb3xmvMc
18:33:12*ponce- is now known as ponce
18:35:05AraqBitPuffin: better docs would help too
18:35:52BitPuffinAraq: haha, yup. But music video has only slightly higher priority :P
18:36:16BitPuffinI can make you a nimrod death metal song
18:38:44Araqok sounds good
18:39:07*io2 quit (Ping timeout: 272 seconds)
19:09:14EXetoCpie
19:15:37*rel42 joined #nimrod
19:35:39*io2 joined #nimrod
19:46:09*XAMPP joined #nimrod
20:05:47guaquahmm. how would i use TTable with a tuple key? i basically have a pair of strings as a key
20:06:20guaquausing a tuple results in an error, if i'm correct. joining them might be an option, but that'd be a bit rough :/
20:06:26Araqimport hashes # defines 'hash' for tuple
20:06:41Araqand then it should simply work (TM)
20:06:44guaquaoh. thanks!
20:13:05VarriountAnyone know if there is a built in prepend operator for sequences?
20:13:55OrionPKhttp://nimrod-code.org/system.html#415
20:14:18VarriountAh, thanks OrionPK
20:14:42AraqI was about to suggest 's = x & s'
20:14:56Araqbut it turns out OrionPK knows the stdlib better than I do :-)
20:15:01Varriount:O
20:15:07OrionPK:P
20:23:06*Endy quit (Ping timeout: 256 seconds)
20:45:04guaquawhat does this normally come from? Error: for a 'var' type a variable needs to be passed
20:45:44guaquai get this when trying to operate on a TTable with values from iterator
20:46:01*Associat0r quit (Quit: Associat0r)
20:47:06Araqwell a 'for' loop variable cannot be passed as a 'var' if you use items/pairs but can be if you use mitems/mpairs
20:47:36guaquai actually have .keys
20:47:56Araqmkeys exists too I think
20:48:09Araqbut it's dangerous to modify keys in a hash table
20:48:41guaquaahh. i'm looping over the keys of one hash table and updating another one
20:49:01guaquabut using the values from the .keys for those values
20:49:08guaqua(mkeys doesn't seem to exist)
20:49:39Araqfor k in x.keys:
20:49:58Araq y[k] = someValue()
20:50:04*wlhlm left #nimrod ("weechat 0.4.1")
20:50:10Araqshould work
20:50:20Araqif you pass 'k' as a var then it can't
20:50:25Araqfor k in x.keys:
20:50:44Araq p(k) # where p takes a 'var'
20:50:54Araqdoesn't work for obvious reasons
20:51:00guaquafor u, v in graph.keys:
20:51:02guaqua not actually
20:51:05guaquaargh
20:51:09guaqua gamma[u].incl(v)
20:51:17guaquatake those two lines in the middle out
20:51:48Araqgamma is not a var parameter then
20:51:58guaquavar gamma = initTable[string, TSet[string]]()
20:52:08guaquai think i'm completely off
20:52:46Araqtry this:
20:52:54Araqfor k in graph.keys:
20:53:09Araq gamma[k[0]].incl(k[1])
20:53:59guaquasame error
20:54:46Araqlook at the exact column the compiler gives you please
20:54:56*shafire joined #nimrod
20:54:57shafirehi
20:55:11Araqwb shafire
20:55:14guaquait's the gamma indexing
20:55:24shafirewhere is the video?
20:55:31guaqua(didn't even realize it also prints out the column, sorry about that!)
20:55:36Araqah yeah that makes sense
20:55:50Araqyou have to use 'mget' here then
20:56:01Araq gamma.mget(u).incl(v)
20:56:36guaquabasically: hmm. for modifying access, use a different getter? (it works now)
20:57:08Araqshafire: not online yet :-/ slides are here though: http://nimrod-code.org/talk01/slides.html
20:57:44shafirethanks
20:57:56shafirehow was the talk for you? :)
20:57:59Araqguaqua: well nowadays we can overload [] for both ... perhaps. But I kind of like it this way.
20:58:35guaquai can see how it can be useful to specify this. a bit like c++ const correctness stuff, or some other languages immutable interfaces
20:59:54Araqshafire: lots of people enjoyed my talk. I got no negative feedback. Perhaps that means something ... ;-)
21:00:57Araqguaqua: currently 'var T' as a return type is still a loophole for memory safety. and as long that is the case, I don't think we should make the syntax nicer. (I know how to fix it.)
21:01:38shafireAraq: sounds good :)
21:02:38guaquaAraq: can i make the assumption that var return type means that it's not const? (i'm no expert at c++, but that's one of the things i picked up from it)
21:03:23Araqyes
21:10:37*brson joined #nimrod
21:20:36guaquahow badly will i kill my nimrod application's performance if i generate a lot of garbarge?
21:20:39guaquacompletely?
21:21:50AraqI don't think so
21:22:07Araqthe compiler itself uses the GC like crazy
21:22:36guaquais there a way to profile nimrod code? use C tools?
21:23:07Araqthat's an option but there is also the nimrod profiler
21:24:11Araqhttp://nimrod-code.org/estp.html
21:24:26guaquagot it. looks nice
21:24:46Araqdepending on your needs it's a awesome or useless
21:24:56guaqua:D
21:24:58guaqualet's see
21:26:00guaquaoff to bed now, though. thanks for all the help! i'll have to do some more investigation tomorrow. looks very promising when it comes to expressive power...
21:27:19Araqit's nice that you finally start using it :P
21:35:45*rel42 quit (Quit: Leaving)
21:39:37*gdos quit (Ping timeout: 246 seconds)
21:39:49shafireoff to bed too
21:39:50shafirebye
21:39:58Araqbye
21:40:02*shafire left #nimrod (#nimrod)
21:40:09*shafire joined #nimrod
21:40:15*shafire left #nimrod (#nimrod)
21:41:19OrionPKso Araq, writing that compiler switch to generate a "header" of a nim file with just declarations.. would that just involve writing something similar to docgen?
21:46:55EXetoCwhat is it needed for?
21:47:36OrionPKso you can write nicely encapsulated wrappers for C++ libraries
21:48:02OrionPKor just nimrod libraries where you only expose a dll and the interface
21:48:07OrionPKrather than the whole library
21:50:10EXetoCI'm not sure why you can't control that where the definitions are, but anyway I guess it doesn't hurt, so good luck :>
21:50:26OrionPKcant control where the definitions are?
21:51:11*io2 quit ()
21:53:41EXetoCyou missed a word
21:53:54EXetoCbut why do we need to separate the two?
21:54:16OrionPKscenario.. there's a sweet game engine in C++, so I decide I want to write a wrapper for it so it's easy to use with nimrod.. I write the wrapper with a bunch of ugly emits and whatnot
21:54:56OrionPKany nimrod project that wants to use that library either has to put it in a separate DLL or compile with the cpp switch
21:55:22OrionPKif you put it in a separate dll you still need a .nim file with all the procs and types
21:55:31EXetoCok, and for actual native nimrod libs?
21:55:32OrionPKthat are in the dll
21:55:40OrionPKthat .nim file is what I want to generate automagically
21:56:03*Demos joined #nimrod
21:56:17Demoshey yall
21:56:47OrionPKfor actual nimrod libs, it could be done for the same reason anyone makes dlls
21:57:39OrionPKmake it so you can distribute a library without the entire source code or keep different bits separate so you can upgrade them more easily later
22:00:49EXetoCmakes sense. I have a serious lack of imagination :>
22:02:48EXetoCI wonder if I can remedy that with a little bit of biohacking
22:03:07OrionPKyour imagination?
22:03:59Demosalso, I do not think JNI or P/Invoke work with static libs
22:04:20Demoslikely ditto for scripting language integration
22:04:55EXetoCOrionPK: yeah!
22:05:36*gdos joined #nimrod
22:13:01OrionPKdoes ur brain run arm architecture
22:13:21EXetoCnot yet
22:23:47Demosso I found that nimrod's style of OO is really nice when one has to export stuff to C
23:14:19*XAMPP-8 joined #nimrod
23:17:16VarriountDemos, yeah, it's very... structured
23:17:32*Varriount likes structure
23:23:21*Associat0r joined #nimrod
23:28:28*XAMPP-8 quit (Ping timeout: 240 seconds)
23:29:34DemosI would use the word structish, structured implies inflexibility
23:39:33EXetoCc(:)-|<
23:39:41*Varriount quit (Ping timeout: 272 seconds)
23:41:03*ltbarcly joined #nimrod
23:51:55*ltbarcly quit (Quit: Computer has gone to sleep.)
23:52:57*Varriount joined #nimrod
23:56:36VarriountO_o I think nimbuilder caused my system to crash...