<< 08-07-2014 >>

00:04:23*superfunc quit (Quit: Lost terminal)
00:04:25NimBotAraq/Nimrod devel 21be7bf Araq [+0 ±3 -0]: fixes #1310
00:04:25NimBotAraq/Nimrod devel f9d7e8d Araq [+0 ±2 -0]: implements #1332
00:04:25NimBotAraq/Nimrod devel f16449e Araq [+1 ±4 -0]: fixes #1103; fixes #1297
00:04:46*lorxu joined #nimrod
00:05:43lorxuHi
00:06:12Araqgood night
00:11:11drsaraq: http://nimrod-lang.org/intern.html do you mean "Porting to new platforms" ?
00:12:29*Swammy joined #nimrod
00:12:35def-drs: for cross compilation i would have assumed this: http://nimrod-lang.org/nimrodc.html#cross-compilation
00:15:35drsah this is good
00:15:38drsi'll give it a try :)
00:24:21*lorxu quit (Ping timeout: 248 seconds)
00:25:25*boydgreenfield quit (Quit: boydgreenfield)
00:31:18*q66 quit (Quit: Leaving)
01:15:17*superfunc joined #nimrod
01:23:38*darkf quit (Read error: Connection reset by peer)
01:24:06*darkf joined #nimrod
01:37:04*ARCADIVS joined #nimrod
01:47:12*brson quit (Quit: leaving)
01:49:56*superfunc quit (Ping timeout: 240 seconds)
02:18:12*ics joined #nimrod
02:20:34*nande quit (Read error: Connection reset by peer)
02:58:10*ics quit (Ping timeout: 240 seconds)
02:58:31*Jesin quit (Ping timeout: 256 seconds)
02:59:33*Jesin joined #nimrod
03:03:28*Swammy left #nimrod ("Textual IRC Client: www.textualapp.com")
03:18:26OrionPKany native markdown libs for nimrod?
03:35:18*ARCADIVS quit (Ping timeout: 240 seconds)
04:39:07*lorxu joined #nimrod
04:47:17*Jesin quit (Ping timeout: 245 seconds)
04:57:44*Jesin joined #nimrod
05:29:42*kshlm joined #nimrod
05:29:43*kshlm quit (Changing host)
05:29:44*kshlm joined #nimrod
05:34:44*superfunc joined #nimrod
05:45:33*Jesin quit (Read error: Connection reset by peer)
05:45:33*superfunc quit (Read error: Connection reset by peer)
05:46:14*Jesin joined #nimrod
06:09:33*superfunc joined #nimrod
06:12:11*Varriount|Mobile quit (Read error: Connection reset by peer)
06:14:45flyxAraq: I guess I have a general idea about how your changes fix the issues, if that's what you mean by understanding
06:19:55*X-Scale quit (Ping timeout: 272 seconds)
06:23:04Araqflyx: well feel free to ask
06:26:29flyxAraq: I don't really understand why you moved the second parameter of opcWrDeref in the third slot, leaving the second slot unused
06:27:28Araqconsistency
06:27:48Araqwhich is required by the new preventFalseAlias
06:29:30flyxah, yes, I see
06:30:01Araqthat patch took a while btw
06:30:13flyxI can imagine that
06:30:30Araqfirst I tried to make ldObj et al produce the additional copies
06:30:47Araqbut that doesn't really work and when you think about it
06:31:12Araqyou only need the copy when you write to non-temporary storage
06:32:40Araqthe root cause of these problems is that opcLdObj was not really specified
06:33:24Araqbut now all the opcLd* opcodes load an address
06:35:24flyxyou use the terms "load" and "store" in the comment, what exactly do they mean?
06:35:27*MayurYa joined #nimrod
06:35:27*MayurYa quit (Changing host)
06:35:27*MayurYa joined #nimrod
06:36:23Araqa.b = x.y
06:36:27Araqx.y # load
06:36:32Araqa.b = # store
06:36:57Araqarrays and pointer deref are analogous
06:37:24*error424 joined #nimrod
06:37:55error424o/ hello
06:39:09Araqlet foo = "abc" # no store, we treat 'let' as temporary storage
06:39:25Araqvar foo = "abc" # requires a store
06:39:29Araqhi error424
06:39:32flyxso let is basically a reference.
06:40:16Araqdepends on the type. for 'int' it will create a copy
06:40:37Araqints and floats are special in that they can directly fit into a register
06:41:25*superfunc quit (Ping timeout: 248 seconds)
06:42:04flyxmakes sense. so, coming back to the coment in the code, it says that it's wrong to generate opeAsgn for the *load* of x.y. according to what you told me, x.y is a load
06:43:48error424I ran across Nimrod today after looking at D and Rust. I've gone through a bit of the tutorials and it seems very nice. I run a game development club at my college so I am also interested in using it for 2D and 3D things and am glad to see it has an SDL binding.
06:44:33Araqit also has the best openGL wrapper once you get over the loadExtensions gotcha
06:45:09AraqI made it work with nimrod's dead code elimination, I don't think D and Rust can do that ;-)
06:45:32error424Very nice, what is the gotcha exactly as far as using openGL with it?
06:46:02Araqsometimes you need to call loadExtensions
06:46:08Araqand sometimes you don't
06:47:27error424hmm, I will hopefully see that tomorrow in my next tutorial grinding session
06:54:13Araqit's really not a big deal and the docs of opengl are explicit about it
06:58:07error424Ah, ok. I've only really dealt with openGL through Java wrappers which can be really irritating trying to setup a VBO.
07:00:39NimBotAraq/Nimrod devel 91ecae9 Araq [+0 ±1 -0]: fixes #1328
07:00:39NimBotAraq/Nimrod devel d3c79ce Araq [+0 ±1 -0]: fixes #1167
07:00:58flyxsetting up a VBO is partly irritating by design in OpenGL, but marshaling from Java surely doesn't make it easier
07:01:14AraqI need to go, see you later
07:01:32error424later, Araq.
07:02:41error424The problem java always gave me was that it could not allocate directly a floatbuffer. I guess some sort of inconsistency between the virtual machine and the native machine.
07:03:29error424I believe it was JOGL that I was using
07:03:52error424Anyway, I would take native code over a VM anyday
07:04:11flyxespecially when dealing with APIs like OpenGL
07:05:17flyxthat wasn't even remotely a use-case Java was designed for
07:06:19error424Indeed. I would have used C++ but I always have a hard time linking libraries for it.
07:07:51error424Which is most likely laziness on my part but JOGL made some things much easier (everything but the VBO really)
07:08:32flyxC++ is a language that enables you to do a lot of things, but most end up with shooting yourself in the knee.
07:09:30flyxif a language is too hard to use, it's not your fault if you don't use it
07:10:15error424I would love to agree with you on that, but sometimes you just have to learn :)
07:11:09error424Nimrod has definitely been easy to use though. Windows install was much easier than linux just because I'm a linux noob
07:11:28flyxtell me about it. I program C++, Java, Perl, XSLT and some other things at my job
07:12:04error424that's a pretty mixed bag of languages and runtimes to keep track of
07:12:27flyxit's just „use whatever the customer wants“
07:14:13error424that's unfortunate. I would expect customers to take solutions rather than specific languages
07:14:43error424I guess they have a maintenance team trained in just a few languages
07:16:47flyxonce you are required to code for a Java EE environment the selection of languages is rather limited
07:17:07*Matthias247 joined #nimrod
07:17:19*Matthias247 quit (Client Quit)
07:18:38error424That's pretty gross, but you could do a lot worse in terms of languages I guess.
07:20:16flyxa year ago, I developed a component for a Java EE application, dealing with data transformation. it would have been easy to code in Java, but the customer said it has to be XSLT
07:21:34flyxthe reasoning was "the data format changes quickly, so we need to deploy new versions quickly. quality assurance prevents us from deploying Java code quickly"
07:21:55flyx„but XSLT is just XML, so it's just data, we can deploy that much quicker!"
07:22:17flyxeveryone from our team facepalmed.
07:22:41error424That's crazy, Java is easy to begin with
07:23:40error424lock down your interfaces before you buy software for it...
07:24:12*Trustable joined #nimrod
07:24:39flyxJava EE is actually quite complicated
07:24:49flyxand needlessly so
07:25:06error424Ah, I've only encountered the regular JDK
07:26:11flyxconsidering the reqular sdk, yeah, tell be about how I need to instantiate several buffers and streams to write to stdout
07:26:31error424that is gross
07:27:29flyxI agree that as a language, it's pretty easy to learn.
07:28:31error424What is the purpose of the enterprise edition? server performance?
07:29:01flyxsecuring jobs of a quite a bunch of people.
07:29:22flyxmore seriously, it's about having a standardized platform to run your stuff on
07:30:21error424sounds like a unicorn to me, the standard compiler is a pretty decent horse to me
07:30:30error424but I'm not everybody
07:30:41flyxtake for example a database: if your code needs one, you just tell that to the platform, and the platform just gives you a handle to whatever DB connection is configured
07:31:16flyxit also manages load balancing and such things
07:31:56*kshlm quit (Quit: Konversation terminated!)
07:32:58error424I haven't dealt with a lot of databases yet so I will just have to take your word on its merit in that regard
07:33:42*kunev joined #nimrod
07:39:23flyxwell the merit is that the administrator gets a bunch of software from some contractor and knows exactly what he needs to do to setup the database for that software
07:39:57flyxbecause the process is standardized on the platform
07:40:55flyxI have to add, I think the whole platform is just terrible and the theoretical merits do not add up to the problems it causes
07:43:13error424It must be pretty nice for the administrator at least, heh. I've heard of other languages like haskell being very good at dealing with SQL but for now are way over my head.
07:45:55error424anyway, nice chatting to you; see you around!
07:46:10*error424 quit (Quit: Page closed)
08:37:11*MayurYa quit (Ping timeout: 240 seconds)
08:39:28flyxtrying to build Nimrod from csources on Windows/cygwin: /usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld: c_code\1_1\stdlib_system.o: bad reloc address 0x54 in section `.rdata'
09:05:30*utkan joined #nimrod
09:18:03*atlithorn joined #nimrod
09:21:01*utkan quit (Ping timeout: 256 seconds)
09:24:24*utkan joined #nimrod
10:29:33*gsingh93_ quit (Quit: Connection closed for inactivity)
10:35:59*utkan quit (Ping timeout: 264 seconds)
10:37:24*kshlm joined #nimrod
11:00:38*utkan joined #nimrod
11:00:41*utkan quit (Remote host closed the connection)
11:00:47*utkan joined #nimrod
11:06:20utkanHi, how does Rust and Nimrod compare?
11:07:43utkanI mean, in terms of usage
11:18:46*lorxu quit (Read error: No route to host)
11:35:54*utkan quit (Quit: Computer has gone to sleep.)
12:06:58*kshlm quit (Ping timeout: 240 seconds)
12:27:03*untitaker quit (Ping timeout: 240 seconds)
12:32:21*untitaker joined #nimrod
12:41:37*kshlm joined #nimrod
12:42:08*kshlm quit (Client Quit)
12:59:05*darkf quit (Quit: Leaving)
13:11:26*EXetoC joined #nimrod
13:30:08*X-Scale joined #nimrod
13:37:45*Kazimuth joined #nimrod
13:37:49*Kazimuth quit (Read error: Connection reset by peer)
13:46:20*lorxu joined #nimrod
14:37:38*AndChat|226100 joined #nimrod
14:39:49*lorxu quit (Ping timeout: 248 seconds)
15:07:52*lorxu joined #nimrod
15:09:41*AndChat|226100 quit (Ping timeout: 248 seconds)
15:30:26*lorxu quit (Read error: Connection reset by peer)
16:35:59*kunev quit (Ping timeout: 264 seconds)
16:44:50*utkan joined #nimrod
16:49:48Araqutkan: nobody uses nimrod, everybody uses Rust
16:50:41utkansorry i meant "usage fields".. if that makes more sense
16:50:45utkansorry for bad english :/
16:50:58utkando they both target the same audience
16:51:22AraqI guess they do since they both are "systems" programming languages
16:54:18*brson joined #nimrod
16:55:40*superfunc joined #nimrod
16:57:17*Matthias247 joined #nimrod
17:00:12Araqutkan: Rust pretty much targets only the low level stuff, Nimrod targets both the low level and the high level stuff
17:00:35Araqas it has been designed to replace the common Python+C or perhaps Lua+C++ combinations
17:02:36*q66 joined #nimrod
17:03:01utkanI see, thank you
17:04:42Demosutkan, nimrod does not offer the memory safety without a GC thing that rust does. Instead nimrod just has a really fast garbage collector
17:05:28DemosI also think nimrod is a much simpler and eaiser to use language than rust, and does not encourage complex designs as much, but that is just me
17:07:35DemosAraq, can you tell me what the params to sigmatch.typeRel mean? Presumably c is the candidate, What are f and aOrig?
17:11:13utkanDemos, thank you too. Also from as I see Nimrod's syntax is way better than Rust's
17:11:58utkanFor my taste, at least
17:12:26Demosyeah, this is true. I like the balence between enforcing stuff and not getting in the way. I LOVE the way typeclasses work and how there is really no notion of methods as "members" of an object
17:15:11*atlithorn quit (Quit: atlithorn)
17:18:55drsso i'm trying to "regenerate" the csources code.. is this the right command to do that: nimrod cc -d:release -r -d:useLibzipSrc tools/niminst/niminst --var:version=0.9.8 csource compiler/nimrod.ini -d:release
17:28:32*gsingh93_ joined #nimrod
17:32:00Matthias247Demos: I think the rust guys would argue that it also suits high level stuff ;)
17:32:21Matthias247but I would currently be on your side
17:33:17DemosI am sure they would :D
17:36:43Demosgaah I really want to fix overload resultuion for static[T]s. It should just treat them the same as OR for real types, but it does not.
17:37:11*boydgreenfield joined #nimrod
17:41:21*ics joined #nimrod
17:42:57*Mat3 joined #nimrod
17:43:01Mat3G'Day
17:45:05*ics_ joined #nimrod
17:45:42*ics quit (Ping timeout: 240 seconds)
17:47:02*bjz joined #nimrod
17:47:22dom96hi
17:48:56dom96drs: you can just execute koch csources -d:release
17:49:41*utkan quit (Ping timeout: 248 seconds)
17:50:20*ics_ quit (Ping timeout: 240 seconds)
17:53:25Mat3hi dom96
17:53:29*ics joined #nimrod
17:53:41*BitPuffin quit (Quit: See you on the dark side of the moon!)
17:53:57dom96hi Mat3
17:54:01*BitPuffin joined #nimrod
17:57:25boydgreenfieldCouple of questions about union types (or whatever the right terminology is). 1) Is the right way to declare them like so?: `type TIntMap = TTable[int, int] or seq[int]`; and
17:57:59boydgreenfield2) I’m getting this bizarre compiler error when I change one of my procs to take either a table or a sequence, that relates to type mismatches on the `len` proc of an unrelated `TSet` within the function. I can get rid of the errors and get it to compile by changing everything to sets.len(my_set), sets.incl(my_set, item), etc., but well… that’s a pain and i’m not sure why I should need to
17:58:10boydgreenfield(Trying to clean up some demo code for a gist)
17:59:47*utkan joined #nimrod
18:02:11AraqDemos: f # formal parameter
18:02:30AraqaOrig, a # actual argument
18:02:52Araqproc foo(param: int); foo(arg)
18:02:57*Johz joined #nimrod
18:03:04Araqf --> int (param)
18:03:14Araqa --> type(arg)
18:03:33*ics quit (Ping timeout: 240 seconds)
18:03:51Demosand c is the function we are looking at?
18:04:15Araqc is the candidate yes
18:04:49Araqkeep in mind that there is no symmetry whatsoever between f and a
18:05:15Araqwhen a is compatible with f this doesn't mean f is compatible with a
18:05:15Mat3bodydgreenfield: hmm, are you sure you want declaring an union ?
18:06:54Demosyeah, ofc. 90% of the time when a is compatible with f that means f would NOT be compatible with a
18:10:09boydgreenfieldMat3: Not really. I want a proc to just operate on a table or a sequence, since it’s only using `[]` operations, but I don’t want to declare the body twice. What’s the best way to do that?
18:10:52Araqboydgreenfield: dunno if "or" really is the best choice here
18:11:01boydgreenfieldMat3: What I’m confused by though, is that the compiler seems to be failing on the `set` procs, which aren’t being affected in any way (and indeed when one explicitly calls sets.len, etc. it works — so there’s some kind of dispatch issue)
18:11:18boydgreenfieldAraq: What’s the best practice in these types of situations? I was modeling it the way I might in, e.g., Julia
18:11:23*ics joined #nimrod
18:11:32boydgreenfield(Realize they’re nothing alike, but that’s where I get any familiarity w/ type unions from)
18:11:43Araqusually you can simply leave out the constraints, it's checked at instantiation time anyway
18:11:58Mat3boydgreenfield: ah, you want to declare a higher order function (alias map)
18:12:00Araqproc foo[T](x: T) = ... use x[i] here ...
18:13:25NimBotAraq/Nimrod devel 39ce17a Araq [+0 ±2 -0]: fixes #933
18:13:25NimBotAraq/Nimrod devel d80d8aa Araq [+1 ±2 -1]: fixes #1323
18:13:26boydgreenfieldAraq: That fails for me too. Which is totally bizarre and I can’t figure out. But changing it to x: seq[int] or x: TTable[int, int] works fine. As does just changing all these set operations in the body of the function to sets.len()
18:14:01Araqboydgreenfield: ah so you triggered the symbol lookup bug in generics
18:14:12Araqwhich has nothing to do with constraints indeed
18:14:34boydgreenfieldAh ha. Ya it’s weird because I tried to rip out some irrelevant code and trim it down for a dummy example and, well then it just works
18:14:34AraqI'm afraid foo(a) has to be used instead of a.foo for now as a workaround
18:14:51Araqbut yes
18:15:07AraqI suppose that's more important than fixing the remaining VM bugs
18:15:16boydgreenfieldAraq: Not a problem. I’ll take a look at GH issues to see the background on this one.
18:15:17boydgreenfieldThx.
18:15:29*Araq changes his priorities
18:15:52EXetoCO_O
18:15:56*ics quit (Ping timeout: 240 seconds)
18:16:42Araqhi EXetoC wb
18:16:48Mat3Araq: ehm, I think it is very important that both get debugged
18:16:58Mat3hello EXetoC
18:17:04*ics joined #nimrod
18:17:07*kunev joined #nimrod
18:17:43AraqMat3: well but these VM bugs are no challenge anymore
18:18:31boydgreenfieldAraq: FYI, notably doing f(a) works fine. module.f(a) isn’t needed (e.g., sets.len(a)).
18:18:33*Mat3 must cirquminvent CPU related bugs, ehm sorry features (which are sadly not fixable)
18:18:58Araqboydgreenfield: I know
18:19:10boydgreenfieldAraq: Haha of course. Sorry.
18:19:20boydgreenfieldThx for all the help.
18:22:17*utkan left #nimrod (#nimrod)
18:22:24Araqdom96: when should I merge the LL branch?
18:27:12EXetoCAraq: hello. thanks
18:27:14EXetoCMat3: yo
18:27:34EXetoCMat3: such as?
18:29:06Mat3idiv triple faults dependent on the content of RDX for example
18:29:33EXetoCis it really a feature?
18:31:11Mat3in my opinion not
18:34:58dom96Araq: Does it break any tests?
18:35:40Araqno.
18:36:56dom96merge it then
18:40:36*boydgreenfield quit (Quit: boydgreenfield)
18:40:50Araqwell I'm afraid it breaks async ...
18:41:15Araqbut then I tested it pretty well with it
18:42:29dom96it would probably be wise to wait
18:42:38dom96Until I can fix this async stuff and properly test it
18:42:45dom96but who knows how long that will take.
18:43:36Araqwell it fixes like 10 bug reports
18:47:48*lorxu joined #nimrod
18:56:26dom96Araq: Your call then
18:56:55Araqwell I'm working on the new showstopper now
18:58:02*nande joined #nimrod
19:02:02Demosis there a name for a componentwise min operation on two vectors that returns a vector of the min of each elm
19:03:03*nande quit (Remote host closed the connection)
19:03:47AraqliftedMin :P
19:13:25*Jesin quit (Quit: Leaving)
19:16:07*Jesin joined #nimrod
19:18:07*AndChat|226100 joined #nimrod
19:18:07*lorxu quit (Read error: Connection reset by peer)
19:18:59*atlithorn joined #nimrod
19:24:23*atlithorn quit (Quit: atlithorn)
19:30:26*Jehan_ joined #nimrod
19:48:25*lorxu joined #nimrod
19:48:25*AndChat|226100 quit (Read error: Connection reset by peer)
20:18:12*lorxu quit (Read error: Connection reset by peer)
20:18:28*lorxu joined #nimrod
20:22:41VarriountMeep
20:25:02Demosit is going to be so painful having to program in c++ for school in the fall....
20:27:05VarriountDemos: You could always program in Nimrod, and use the C++ backend to generate C++ code...
20:27:17DemosI kinda doubt that would pass the style linters
20:27:33*Mat3 quit (Ping timeout: 240 seconds)
20:38:14Jehan_C++ in school? I'm sorry ...
20:39:12EXetoCand in introductory courses too. not good
20:39:41Matthias247at least c++ is something useful
20:39:46Matthias247even if you don't like it :)
20:40:48*nande joined #nimrod
20:41:48Jehan_Matthias247: It's more that it's a less than ideal language for teaching.
20:42:16Jehan_If you want to teach people low-level stuff, there are better alternatives.
20:45:21superfuncFor teaching concepts, yeah
20:46:20EXetoCscheme is used to teach beginner's, right? I haven't used it
20:46:27*lorxu quit (Read error: Connection reset by peer)
20:46:28Jehan_superfunc: It's just that in C++ your information flow gets littered with so much extraneous stuff.
20:46:48*lorxu joined #nimrod
20:46:58EXetoCyeah, it's used in that popular book IIRC
20:47:03Jehan_Stuff that's totally irrelevant for what you want to teach, but which you need to know to make the compiler/libraries happy.
20:47:09*nande_ joined #nimrod
20:47:09superfuncScheme used to be, its more python now
20:47:23Jehan_EXetoC: Structure and Interpretation of Computer Programs.
20:48:01Jehan_Freely available here: http://mitpress.mit.edu/sicp/
20:50:07Araq0:5
20:51:12*lorxu quit (Ping timeout: 240 seconds)
20:52:30DemosJehan_, the intro cources are more or less C
20:52:45Demosas are the really low level ones
20:52:54Demosit seems to work OK
20:53:17Jehan_Demos: Ah, that's fine. Still not the greatest choice unless you're teaching an operating systems course, but the ANSI-Cish subset of C++ is at least not horrible.
20:53:27Araqdunno, c++ is fine for teaching low level stuff
20:54:04Araqand Ansi C *is* horrible, ymmv
20:54:24AraqC++'s excuse is that was built on top of C
20:54:26Demosyeah, in the third programming class they do a little with templates, but nothing crazy. And the OS class is C++ (or maybe C, but probably not ANSI)
20:54:30AraqC has no such excuse
20:55:01Demoswe were using C++ as supported by GCC 4.7.0 when I took it
20:55:07Jehan_Araq: ANSI C was built on top of K&R C. :)
20:55:09Demosthey have GCC 4.8.2 now though
20:56:11Araqyes indeed. it was hacked together by some fat guys with beards that couldn't even design arrays properly
20:56:50*nande quit (Remote host closed the connection)
20:56:55drsK&R, started from the bottom, now we here.. well now we're dead.. one of us anyway.
20:57:02*nande_ quit (Remote host closed the connection)
20:57:23*nande joined #nimrod
20:58:19*bjz_ joined #nimrod
20:58:20*bjz_ quit (Client Quit)
20:58:41*bjz_ joined #nimrod
20:59:56Matthias247Jehan_: imho you can program a lot of C++ without using very advanced stuff (templates, const, multiple-inheritance, ...) and then it's quite understandable
21:00:04*bjz quit (Ping timeout: 248 seconds)
21:00:15Matthias247when I first learned C++ I actually found it easier than now :)
21:01:08Jehan_Matthias247: Yeah, been there, done that.
21:01:24Jehan_It gets even better with -lgc :)
21:01:27DemosMatthias247, yeah I agree, the trouble is that the language encourages you to go down really bad raods when what you want to do dose not quite fit
21:01:57Matthias247I think rust would be harder for a total beginner because it requires you to understand more concepts from the beginning
21:02:32bstrieI wouldn't recommend rust as a language for beginners. but then I wouldn't recommend C or C++ either
21:02:45bstriedepends on what material you're intending to cover
21:03:00bjz_Matthias247: rust is definitely not a beginner's language
21:03:06DemosMy gut tells me that rust has the same problem c++ does with leading people toward complexity more than it could be. But time will tell
21:03:42bjz_that's not to say it's an inherently complex language, it is just more chellenging in the concepts
21:04:05Matthias247I think for most people it is already too complex
21:04:06bjz_(it's actually quite simple at its core)
21:04:20Matthias247and I probably include myself :)
21:04:24Jehan_You generally can't teach everything about a modern language. The question tends to be if the language has a reasonable, self-contained subset (that includes standard libraries not exposing too much of the language outside the subset) that you can teach and that's still expressive enough.
21:04:30Demosthe thing about c++ is that it is also quite simple at its core. Everything is implemented "correctly" and the semantics are pretty sane
21:04:52bstrieDemos: if you have blinders on, perhaps. you also have to be okay with teaching students worst-practices
21:04:58Jehan_Demos: I'd argue about the "sane" part.
21:05:13bjz_Demos: the semantics of C++ is bonkers
21:05:19bjz_:P
21:05:24Demoswell there is nothing in c++ that is just like this is wrong and it was wrong when it got standardized
21:05:39Demosexcept maybe vector<bool>
21:05:44superfuncI would make someone learn C before rust
21:05:44Matthias247Demos: std::vector<bool> is wrong for sure :)
21:05:49Matthias247hehe, same idea :)
21:05:55Jehan_Demos: It's not about wrong, it's about being confusing to students.
21:05:57superfuncSo they could appreciate and understand what rust brings to the table
21:06:03DemosJehan_, that I agree with
21:06:16Demosit is only "right" when you understand how the code is getting generated
21:06:41Demoshonestly ANSI C with "fat" arrays and a standardized garbage collector would be pretty good
21:06:45Demosand modules
21:07:29Jehan_Demos: the two things I primarily miss with ANSI C is generics and automatic memory management.
21:07:36Matthias247and a proper string type
21:07:53Jehan_I can use the Boehm GC for the latter, but lack of generics is the killer.
21:08:05Jehan_Matthias247: If you have GC, then that becomes a non-issue.
21:08:06DemosI could live without generics, but I would need modules and a gc
21:08:17superfuncAlso, I really enjoy some of the stdlib in c++
21:08:22superfuncespecially the algorithm header
21:08:32Demosyeah algorithm is nice
21:08:39Demoswe have some of that in nimrod
21:08:51Demosand if you find a need for a given algo you can add it
21:09:18Demosc++'s concept of iterators is getting a bit old
21:09:29superfuncI'm actually porting most of the things in algo to nimrod right now
21:09:30superfuncshhh
21:09:40Demossuperfunc, most of them already exist
21:09:54superfunca good amount
21:09:59Demosnearly all
21:10:07Demosthe ones that do not are not usefull
21:10:12*Matthias247 quit (Read error: Connection reset by peer)
21:10:17superfuncthats subjective
21:10:20Demostrue
21:10:22superfuncdo we have remove_if
21:10:48superfuncmost of them are 1 or 2 line functions in nimrod, but putting a name to things is nice for uniformity
21:11:27*kunev quit (Quit: leaving)
21:11:33DemosfilterIt could be considered similar to remove_if
21:11:41Jehan_Demos: In the end, the question is becoming: Why bother? Except for existing codebases, I can get away with using either Nimrod or Scala, and for any personal project, I can always use one or the other.
21:11:45Demosand the c++ names and signatures are not nimrodic
21:12:02DemosJehan_, libraries
21:12:09Demosesp closed source ones
21:12:45Jehan_Demos: Yes, I know that, but I generally don't need those.
21:13:07DemosYeah
21:14:05Jehan_Would possibly be different if I were working on Windows. Dunno.
21:14:13Demoshonestly I am pretty pumped that c++ is FINALLY getting modules, it makes it a pretty "modern" language save for the lack of GC
21:15:59Demosnimrod feels at-home on windows
21:16:23Demosnone of the c++ frameworks from MS are any good anyways
21:18:32Jehan_Hmm, the OCaml guys seem to be finally working on a multicore version.
21:20:44*Johz quit (Quit: Leaving)
21:21:29Demosis there an equivalent to high() and low() for floats?
21:23:35Demosnever mind
21:24:01superfuncWell, getting it in C++17
21:24:04superfuncwe hope haha
21:25:55superfuncDemos: You're probably right btw, I shouldn't be looking to figure out how to do C++-things in Nimrod, but rather looking for an idiomadic approach that fits the language.
21:26:50Demossuperfunc, yeah I did the same thing. my first pull request was a bad implementation of rotate
21:27:15superfuncSean Parent's talk had me using rotate like crazy for a while
21:48:42OrionPKDemos
21:48:52DemosOrionPK,
21:48:57OrionPKyou should upgrade your visualnimrod sln to vs2k13
21:49:07Demosit totally is vs2k13
21:49:10OrionPKNimrodVS\NimrodVS.csproj: The application which this project type is based on was not found. Please try this link for further information: http://go.microsoft.com/fwlink/?LinkID=299083&projecttype=82b43b9b-a64c-4715-b499-d71e9ca2bd60
21:49:18OrionPKoh ok
21:49:27OrionPKim getting an "incompatible" error
21:49:30OrionPKcant load NimrodVS
21:49:40Demosyeah you need the visual studio extension sdk
21:49:47OrionPKthanks
21:49:54Demosyou also need a version of VS that supports extensions, that means pro or above
21:50:04OrionPKthink i've got taht
21:50:23Demosalso note that I actually call the compiler for highlighting support, which is not actually a very good idea
21:51:05Demosthis means you need to build a seperate dll that has that. Or wait for me to change it to a regex based thing
21:51:24OrionPKahh yeah
21:51:37OrionPKthat'd be a good thing to not do
21:51:39OrionPK:)
21:51:45Demosyeah....
21:53:22Demosautocomplete does work! sorta
21:58:52OrionPKcool :)
21:58:57OrionPKmaybe dont even use regex
21:59:03Demosagain not ready for production use
21:59:07OrionPKu need a nimrod parser/AST in C# :)
21:59:20DemosOrionPK, I do not want to write one of those
21:59:29OrionPKlol
21:59:38Demoswhat we need is the compiler exposed as a library
22:00:03OrionPKthat'd be cool
22:00:20OrionPKso how do I make libnimrod.dll
22:00:25DemosI think one can manage almost all, if not all IDE functions using regex and idetools
22:01:21Demosalso on my github, but it is just not stable. Like it crashes the IDE a good amount of the time
22:01:35Demoshttps://github.com/barcharcraz/libnimrod/blob/master/vsgen.nim works OK though
22:01:40Demosthat generates project files
22:03:13OrionPKhm
22:03:44OrionPKyou make vsgen.exe?
22:03:47OrionPKor what args do u compile it w/
22:04:54Demosit needs to be a dll, probably with nimrtl. You also need to use a different GC, markAndSweep works OK
22:05:00Demosand it needs to be 32 bit
22:05:32OrionPKyou should make a bat or something w/ all the arguments
22:06:02Demosprobably not going to do that, will probably abadon the libnimrod idea and just hack stuff together in c#
22:06:13OrionPKgotcha
22:09:54*utkan joined #nimrod
22:10:23OrionPKUintTests? :)
22:13:57OrionPKDemos can I set one of these to startup project and run it?
22:14:18Demosmaybe
22:14:32*atlithorn joined #nimrod
22:14:40OrionPKor do you just install the vsix to test?
22:15:00Demosummm, building the project should install it to the experimental instance of VS
22:15:12OrionPKwhich project as startup?
22:15:21Demosdoes not matter
22:15:24Demosjust right click
22:15:35DemosI think the VisualNimrod project makes the visx
22:15:42Demosand installs to the experimental instance
22:15:59OrionPKNimrodVS?
22:16:03Demosyeah
22:16:06OrionPKwhen I tried to debug it said it lib output cannot be started
22:16:28Demosoh no that is the library
22:16:33Demosuse the other non-test project
22:16:50OrionPKNimrodSharp?
22:17:15Demosyeah
22:17:19OrionPKsame thing
22:21:21OrionPKis there a project templat?
22:21:44Demosyes
22:22:25Demosbut the build experience is not great, to really do it properly I would need to dump the managed package framework and implement all the project interfaces myself
22:22:29Demoswhich I may do
22:22:55OrionPKthe project template isnt included in the vsix?
22:23:03OrionPKI dont see it in the template chooser
22:24:03Demosit should be in the visx
22:24:17OrionPKi installed it
22:25:24OrionPKah there it is
22:28:00OrionPKnot getting syntax highlighting, but it's building and running
22:28:07DemosOK you have succeded in getting my focus back on visual nimrod
22:28:13OrionPK:D
22:28:28superfuncWhat? Are you guys trying to write nim in VS?
22:28:46OrionPKdemo made a kind of proof of concept nimrod plugin
22:28:49DemosOrionPK, did you build libnimrod?
22:28:52OrionPKyes
22:29:01Demoshm I managed to crash VS with it already
22:29:03superfuncneat, the more the merrier
22:29:20Demossuperfunc, you doing VS integration as well?
22:29:36OrionPKi think he means more plugins
22:29:37superfuncnope, I only use VS at work
22:29:42Demosyeah
22:29:47superfunc^^ yeah
22:30:07superfunceven then, I usually get away with staying in linux
22:30:44OrionPKVS is just the best ide/debugging experience imo
22:30:59superfuncDifferent strokes
22:31:08Demosvs extensibility is a massive clusterfuck though
22:31:11OrionPKI wish I could use visual studio on OS X
22:31:27OrionPKso much better than XCode
22:31:34DemosI rather like XCode
22:31:53OrionPKur a mad man
22:31:53OrionPK;)
22:34:24superfuncI've been mulling the idea of lazy data structures this afternoon instead of working. One way it could work is basically a queue of lambda's that operate on the list which only get invoked when needed. By needed, it could be by someone indexing into it or something. What do you guys think?
22:34:57superfuncAlso, this is "for" nothing, I just don't wanna work
22:35:28*nande quit (Read error: Connection reset by peer)
22:35:45OrionPKlazy data structures?
22:35:49OrionPKmeaning what
22:36:02superfuncMeaning they only get constructed if needed
22:36:29superfuncIn Haskell, I could have "l = [1,2,..]" or something
22:36:53superfuncand until someone calls "take 5 l" the list won't contain anything
22:37:51OrionPKso like linq kinda huh
22:38:26superfuncmaybe, I don't know anything about linq
22:38:47OrionPKyou can just use lambdas to do that
22:38:59superfuncyeah, that's basically what I did
22:39:03OrionPKah
22:40:21def-superfunc: i like lazy datastructures, but i wrote a thesis about visualizing them, so I might be biased. they also lead to some nasty problems
22:41:41superfuncThat's really cool, I'd like to pick your brain about them sometime. I just was curious how I would implement them. Once I finish a few things, I'd like to implement a few of Okasaki's persistent structures
22:43:15*nande joined #nimrod
22:43:25*utkan quit (Quit: Lingo - http://www.lingoirc.com)
22:46:54*atlithorn left #nimrod (#nimrod)
22:48:27*Jehan_ quit (Quit: Leaving)
22:55:58*bjz_ quit (Read error: Connection reset by peer)
22:56:26*bjz joined #nimrod
23:00:32*darkf joined #nimrod
23:02:11*Trustable quit (Quit: Leaving)
23:06:29NimBotVarriount/NimLime master 557ef78 Erik O'Leary [+0 ±2 -0]: Added support for embedded markdown
23:08:35*drs left #nimrod (#nimrod)
23:13:42*Varriount quit (Ping timeout: 240 seconds)
23:14:49*atlithorn joined #nimrod
23:24:52*ehaliewicz joined #nimrod
23:29:11*superfunc quit (Quit: leaving)
23:55:00*ics quit (Ping timeout: 248 seconds)
23:55:07*ics_ joined #nimrod
23:56:44*ehaliewicz quit (Quit: ERC Version 5.3 (IRC client for Emacs))