<<21-05-2013>>

00:00:45AraqI dunno why you want to "override" things when in fact you can simply edit the code instead
00:01:36Araqdo this! no I changed my mind, do that! # hard
00:01:40Araqdo that! # easy
00:02:49reactormonkedit all of system.nim?
00:03:09reactormonk... and the inclusions
00:04:54AraqI already said how it should be done
00:04:56Araqsplit system.nim into system/intops.nim, system/stringops.nim etc.
00:04:57Araqand then include what you do support
00:04:59Araqit's quite some work though :P
00:05:25reactormonkyou think that's the best way?
00:05:52Araqfor embedded, yeah
00:06:02reactormonkok, let's do that
00:06:05Araqbut tbh I'm not sure that can work
00:06:11reactormonkwhy?
00:06:26Araqthe number of switches system.nim supports is large
00:06:35Araqand there are overlapping things etc.
00:06:45*q66 quit (Remote host closed the connection)
00:06:48Araqbut we should try
00:06:56reactormonklet's see
00:07:08reactormonkcall it interfaces/stringops.nim? ;>
00:07:22Araqthere already is a system/ dir
00:07:29reactormonkyeah, but it's getting full
00:07:50reactormonkscrew that?
00:08:36Araqdunno, make a sys/ directory then :P
00:09:03Araqwe'll probably merge it into system/ and pull other things out of system/
00:09:22Araqthe gc stuff could become its own dir, for instance
00:11:08reactormonkI assume `new` is heap?
00:11:23Araqyeah
00:15:23NimBotAraq/Nimrod 1cbf7e4 Simon Hafner [+0 ±4 -0]: some patches concerning signals and standalone OS
00:15:23NimBotAraq/Nimrod 8a9a55a Simon Hafner [+0 ±1 -0]: added "standalone" to possible OS options
00:15:26reactormonkoh fuck
00:15:30reactormonkthat didn't go well
00:15:42reactormonkAraq, could you kill the last two patches?
00:15:50apotheonoopsie
00:16:12Araqgah
00:16:29Araqwhy can't you?
00:16:54reactormonkgot it
00:17:52NimBotAraq/Nimrod c880189 Simon Hafner [+0 ±1 -0]: added "standalone" to possible OS options
00:18:09Araqis that a revert?
00:18:21reactormonknope, I overwrite it.
00:18:37AraqI demanded code review ...
00:18:47reactormonkyeah, I know. I kicked it again.
00:19:37Araqhmm true
00:19:48Araqvery well then, I should sleep now
00:19:53reactormonksorry about the history rewrite :-)
00:21:16Araqit's alright but you should work on a branch anyway
00:21:40Araqnimbuild got cool branch support; 'master' is supposed to be stable now
00:22:25reactormonkok
00:22:40Araqname the branch "standalone" ;-)
00:22:42Araqgood night
00:22:54reactormonkcya
00:27:02*gradha quit (Quit: bbl, have youtube videos to watch)
00:36:17dom96That's odd.
00:36:47dom96git pull is now failing on the test machines because git wants to know the user.email and user.name
00:41:10dom96oh well, fixed.
00:45:29reactormonkis `setLen` always on the heap or can you modify seq length on the stack?
00:47:09dom96good night
01:01:47fowlreactormonk: seqs are hidden reference types, always on the heap afaik
01:34:02*Trix[a]r_za is now known as Trixar_za
01:38:04fowlDominik is a high caliber C expert who loves pushing code. Dominik is a fulltime hacker who seems to work best in the late evening.
01:38:14fowlhttp://osrc.dfm.io/dom96
01:38:18fowl:p
01:48:17*fowl quit (Ping timeout: 256 seconds)
01:51:24reactormonkC expert? lulz.
01:59:41*fowl joined #nimrod
02:07:14reactormonkfowl, are strings hidden reference as well?
02:08:06fowli think so
02:08:53reactormonkhm
02:45:35reactormonkwould it be possible to add random examples to the homepage?
04:03:33*ARCADIVS joined #nimrod
04:13:00*OrionPK quit (Read error: Connection reset by peer)
04:42:14*vegai joined #nimrod
05:25:03reactormonkAraq, oh god, that stuff is cascading
05:26:30reactormonkso far, I see a) seq operations b) sets c) strings d) repr, depends on c e) alloc stuff, maybe linked to f) GC g) exceptions
05:26:48reactormonkI have no idea yet how the dependencies are
05:59:51*silven joined #nimrod
06:19:37*fowl quit (Ping timeout: 246 seconds)
06:20:43Araqhi vegai, welcome!
06:24:40vegaihi
06:28:40*Trixar_za is now known as Trix[a]r_za
06:28:52reactormonkAraq, sup ;-)
06:29:56reactormonkAraq, any way to undefine something?
06:53:03*fowl joined #nimrod
07:12:22*shevy quit (Remote host closed the connection)
07:22:48Araqreactormonk: no
07:23:05reactormonkAraq, any plans to do so?
07:24:05Araqno
07:24:10reactormonkkk
07:24:18reactormonkis my listing above somewhat accurate?
07:25:15Araqsure but then I don't know the dependencies either
07:25:36reactormonklet's find out
07:27:00reactormonkstrings are heap-based?
07:27:05reactormonkare cstrings as well?
07:27:23Araqcstrings are C strings, they live where you chose them to live
07:27:33reactormonkgood
07:27:39AraqNimrod's strings are heap based
07:27:59reactormonkgood
07:53:20fowlMutable variables are too pretty. IMO immutability should be syntactically and semantically preferred, with mutable variables only used in rare circumstances.
07:53:50reactormonkfowl, kinda scala mentality
07:54:14fowli dont get this "this isnt language X, make it more like language X" mentality
07:54:34reactormonkfowl, except it won't ever target the JVM ;-)
07:55:08fowlthats not what the homepage says
07:55:33fowlo wait yes it does
07:56:00fowlForward declarations. I spend my days writing C++, and I'll happily admit that I spend very little time actually worrying about forward declaration in reality. So it's completely irrational, but yet: this limitation doesn't belong in a modern language.
07:56:39fowli guess he doesnt worry about them because he writes the header first then implements? how do you write c++ without forward declarations
07:57:02reactormonkhttp://nimrod-code.org/ <- needs a link
07:58:50reactormonk... to the new page
07:59:11fowlwhat new page?
07:59:26reactormonkhttp://nimrod-code.org/news.html
07:59:45fowlits in the header
07:59:49fowlhome, news, docs, download,
08:00:51reactormonkok, I mean the page should be linked to http://nimrod-code.org/index.html
08:25:35Araqbbl
10:18:38dom96"Dominik is a high caliber C expert who loves pushing code." :D
10:19:02dom96And yet I haven't pushed a single line of C code :P
10:19:14fowli do c too
10:19:34fowli wonder if ive accidentally pushed nimcache or something
10:19:54dom96"It seems�from their activity streams�that Billingsly and Araq are probably friends or at least virtual friends. With this in mind, it's worth noting that araq is less of a whiner."
10:19:56dom96hahah
10:21:28fowlWith this in mind, it's worth noting that araq speaks more languages.
10:21:38fowlseems to say something different every time i refresh
10:21:59dom96huh, meh. That's silly.
10:22:12dom96or maybe all of those are actually true ;P
10:22:23fowlWith this in mind, it's worth noting that araq has a less consistent weekly schedule.
10:23:51fowlone time it said i was a champion Rubyist, but not as good a Rubyist as <someotherguy> =(
10:27:10fowlnight all
10:27:33dom96bye fowl
10:58:46*q66 joined #nimrod
11:26:13*__ponce joined #nimrod
11:26:36Araqyay __ponce is back
11:27:29__ponceI felt the reddit hype directing towards here
11:28:08Araqyeah ... it's getting crowded in here :P
11:31:49__ponceI'm curious about your sample code here http://pastebin.com/Md0aCnME how do you know it happen at compile-time?
11:32:08__ponceis it "static foreach" or compile-time execution?
11:32:27Araqit is "static foreach"
11:32:43Araqit's not a real loop, it merely looks like one
11:32:57__poncevery cool
11:33:27Araqyou can also iterate over 2 objects at once with it:
11:33:33Araqfor x, y in pairs(a, b):
11:33:44Araq if x != y: return false
11:33:51Araqreturn true
11:33:57Araqwould be '==' for tuples
11:35:01Araqer
11:35:08Araqs/pairs/fields
12:11:24*zahary_ joined #nimrod
12:28:13dom96__ponce: nice to see you submitted news about Nimrod to HN again. When I submitted it I got 0 points.
12:29:00dom96But hey, whatever gets it to the front page :)
12:29:02__poncewell there is a bit of luck too
12:29:28dom96yeah, timing it seems sometimes is everything.
13:15:57*ARCADIVS quit (Quit: WeeChat 0.3.8)
14:08:46*Trix[a]r_za is now known as Trixar_za
14:27:03*fowl quit (Ping timeout: 256 seconds)
14:36:00*rgrinberg joined #nimrod
14:41:08dom96hello rgrinberg
14:45:09rgrinbergdom96:
14:45:10rgrinberghi
14:45:15rgrinbergoops :D
14:46:36dom96welcome to #nimrod :)
14:46:56rgrinbergthanks, installing nirmod right now :D
14:47:10rgrinberglooks like an interesting language. is tehre a vim mode?
14:47:16dom96cool.
14:47:59dom96There is indeed: https://github.com/zah/nimrod.vim
14:49:07rgrinbergdom96: sweet
15:16:54*Trixar_za is now known as Trix[a]r_za
17:47:33*fowl joined #nimrod
17:48:36*Trix[a]r_za is now known as Trixar_za
18:05:34*Reiser quit (Ping timeout: 240 seconds)
18:09:44reactormonkrgrinberg, slightly better maintained than the emacs mode :-/
18:09:58reactormonkdom96, is that on the website btw?
18:10:23dom96reactormonk: what? The availability of vim mode?
18:10:28*Trixar_za is now known as Trix[a]r_za
18:10:39reactormonkAraq, how come only some of the pages are of the new layout?
18:10:42reactormonkdom96, yup
18:11:04dom96reactormonk: It's not, no.
18:11:29reactormonkdom96, maybe add it to the FAQ?
18:11:56dom96reactormonk: Well, it's already in the "Unofficial FAQ" on github.
18:12:06reactormonkdom96, where is the official FAQ?
18:12:14dom96But yeah, I guess it would be useful in the official FAQ
18:12:31dom96http://www.nimrod-code.org/question.html
18:12:32reactormonkor just link to https://github.com/Araq/Nimrod/wiki/Editor-Support in the official FAQ
18:14:37dom96yeah
18:15:48reactormonkhttp://sprunge.us/MKBX good?
18:16:45dom96Ask Araq ;)
18:17:27rgrinbergreactormonk: good to know, usually it's the other way around :D
18:19:15reactormonkrgrinberg, I'm editing some more specific functionality than more of the general one, see https://github.com/Tass/kwin-minor-mode
18:19:58reactormonkthe lines in question: https://github.com/Tass/kwin-minor-mode/blob/master/kwin.el#L123-L125
18:28:49*fowl quit (Ping timeout: 248 seconds)
18:31:54*Trix[a]r_za is now known as Trixar_za
18:41:22*fowl joined #nimrod
19:04:14*Reisen joined #nimrod
19:27:41dom96well it seems it's almost the end of our ride on the front page of reddit.
19:28:05dom96Earned at least 10 new "stargazers" on github though :)
19:29:47*Trixar_za is now known as Trix[a]r_za
19:30:43comexmeh
19:30:49comexmaybe I should pay attention to this channel after years of neglect :)
19:31:05comexdid you ever improve the compiler speed? :P
19:34:53Araqcomex: I got --symbolfiles to work
19:35:10Araqbut it's broken again for 0.9.2 :P
19:35:22dom96comex: you should help us advertise nimrod!
19:35:46Araqbootstrapped in0.02s or so when it worked
19:36:26comexcool, fix it :)
19:37:04Araqyeah I will definitely
19:37:35Araqotherwise compile times used to be 1s for bootstrapping and now it's 2.7s on this machine :P
19:37:46Araqso we're getting worse and worse
19:37:48comexi still haven't gotten around to making my pet language :(
19:38:04Araqon the other hand, it also needs to compile more code
19:38:16Araqthat makes it hard to say
19:38:34Araqit went from 45K LOC to over 60K iirc
19:40:19dom96comex: Well? How about tweeting about Nimrod?
19:41:18comexheh, most of my followers are not programmers
19:41:49comexyou'd think i'd get more response when i tweet things, considering my number of followers, but i don't get that much anymore :p
19:41:52rgrinbergare nimrod's variant types are tagged variants or just dumb enums?
19:42:21Araqtagged variants
19:42:32Araqenum + union if you want to call it that way
19:42:54Araqit uses runtime checking as opposed to compile time checking that you access a valid field
19:43:03AraqI know, I know, it's BAD for marketing
19:43:19Araqit's however very sweet for the compiler itself and the resulting expressivity
19:43:55AraqI suppose it's another blog post away to debunk it :P
19:43:59dom96comex: Out of the 200k that you have i'm sure at least 1% are programmers :P
19:45:14dom96Araq: So how about that blog then?
19:45:16rgrinbergAraq: what kind of expressivity do you gain?
19:45:34Araqlot of unless you have dependent typing
19:46:23Araqmost examples I have in mind are not text book compatible
19:46:32rgrinbergtext book incompatible is fine for me
19:47:22rgrinbergi just have a hard time imagining the difference with say ml's variants
19:48:07Araqconst
19:48:09Araq skipForDiscardable = {nkIfStmt, nkIfExpr, nkCaseStmt, nkOfBranch,
19:48:10Araq nkElse, nkStmtListExpr, nkTryStmt, nkFinally, nkExceptBranch,
19:48:12Araq nkElifBranch, nkElifExpr, nkElseExpr, nkBlockStmt, nkBlockExpr}
19:48:13Araqproc ImplicitlyDiscardable(n: PNode): bool =
19:48:15Araq var n = n
19:48:16Araq while n.kind in skipForDiscardable: n = n.lastSon
19:48:18Araq result = isCallExpr(n) and n.sons[0].kind == nkSym and
19:48:20Araq sfDiscardable in n.sons[0].sym.flags
19:48:22Araqrecently added to the compiler :P
19:48:34Araqit takes a while to explain it
19:50:10Araqhmm maybe I should have started differently
19:51:26rgrinbergfirst i should probably figure out the pattern matching syntax in nimrod :D
19:52:08rgrinberg"source code filters" oh god this reminds me of using perl back in the day...
19:52:46AraqI invented it and then later figured Perl has it too :P
19:52:55Araqbut don't worry, it's very rarely used
19:53:15Araqand when it is used, it's the right tool for the job IMO
19:55:26*rgrinberg rushes to port Acme::Bleach to nimrod
20:08:59rgrinbergreading the faq, i'm curious as to why a jvm backend seems impossible?
20:09:10rgrinbergdoes it mean an efficient backend?
20:09:15rgrinbergspecifically
20:09:56Araqyeah
20:10:06Araqand it pains me to say it
20:10:28Araqbut nowadays with the typed arrays JS is better target than the JVM or at least quickly becoming one
20:10:35rgrinbergis it the absence of value types?
20:10:42Araqyes
20:10:44rgrinbergi see JS is always "hip" to target
20:11:15AraqJS is the final proof for "worse is better"
20:11:19rgrinbergi'm sure i can google this but what's teh state of
20:11:29rgrinberg1) a build system for nimrod projects
20:11:35rgrinberg2) package management
20:11:39rgrinberg3) parsing/lexing tools
20:11:57Araq3) none that I'm aware of unfortunately
20:12:02Araq2) Babel
20:12:17Araq1) mostly unnecessary since the it's all integrated into the compiler
20:12:40fowli wrote a really simple make-like
20:13:34rgrinbergI see, will check out babel
20:14:23fowlhttps://gist.github.com/fowlmouth/3607822
20:16:41rgrinbergfowl: Thanks, nimrod code looks pretty clean
20:17:18fowli am actually cleaning it up a bit, havent looked at this in a while and spotted a bug
20:18:13rgrinberggive it a home more worthy than a gist
20:24:14reactormonkAraq, http://sprunge.us/MKBX good?
20:25:32Araqwhy not copy the answer that's on the wiki?
20:25:57Araqand remove this "C compilation fails" crap question
20:26:04Araqthat hasn't been an issue since years
20:26:07reactormonkAraq, redundant information?
20:26:23Araqyeah but it avoids a click for the user
20:26:32dom96Araq: IMO it's better to link to a version which will always be kept up to date.
20:26:48reactormonkAraq, this one? Execution of GCC fails (Windows)
20:26:51dom96Actually, I would do both.
20:26:53Araqit's up to date except that other editors will follow
20:27:01Araqreactormonk: yes.
20:27:02dom96Provide a nice summary of the editors and provide the link to the wiki.
20:27:12Araqdon't make the user click
20:27:55*amarsahinovic joined #nimrod
20:28:07dom96hello amarsahinovic
20:28:18reactormonkAraq, kk
20:28:22amarsahinovichi :)
20:28:50reactormonkAraq, so shorten the github wiki?
20:29:12Araqhi amarsahinovic, welcome
20:29:32Araqreactormonk: don't make the user click, I don't care about the github wiki that much
20:29:34reactormonkAraq, what's that format?
20:29:41AraqRST
20:30:12amarsahinovicthanks Araq
20:33:51reactormonkAraq, why not markdown? :-)
20:34:02Araqmarkdown is a subset of RST
20:34:12Araqfor all practical concerns
20:35:21reactormonkexcept the hyperlinks
20:35:49NimBotAraq/Nimrod a41b953 Simon Hafner [+0 ±1 -0]: add FAQ about editor support
20:35:49NimBotAraq/Nimrod 6adc2e5 Simon Hafner [+0 ±1 -0]: removed GCC FAQ - not an issue anymore
20:35:49NimBotAraq/Nimrod 4d4c4b3 Simon Hafner [+0 ±1 -0]: better editor support FAQ
20:36:24reactormonkhm, too much of a habit to push stuff, sorry
20:36:27reactormonkwill branch more.
20:37:01Araqit's fine
20:37:18reactormonkhttps://github.com/Araq/Nimrod/blob/4d4c4b350566a13b51f1cd7e258b8434bf73876f/web/question.txt#L82 <- fine?
20:38:12Araqyes, maybe we should remove the unsupported compilers in the table
20:38:33reactormonkgood, let's see if I can split the system.nim into meaningful sections
20:38:44Araqbranch for that!
20:39:06reactormonksure
20:39:27reactormonkdid so already
20:39:49NimBotAraq/Nimrod 837e514 Araq [+0 ±2 -0]: fixed typos in the manual; kept trimcc tool up to date
20:39:49NimBotAraq/Nimrod fd29062 Araq [+0 ±2 -0]: Merge branch 'master' of github.com:Araq/Nimrod
20:40:18NimBotAraq/Nimrod a0e3e33 Simon Hafner [+0 ±1 -0]: removed unsupported compilers from the FAQ
20:40:54amarsahinovicI was just checking nimrod (and jester), and I created a simple app which just sends json response, to compare nimrod to my go (beego framework to be exact) version, and nimrod seems to be almost 3 times as fast. So I came here to suggest that you submit your version to this benchmark https://github.com/TechEmpower/FrameworkBenchmarks a little bit of exposure for nimrod can't hurt :)
20:43:14Araqamarsahinovic: thank you
20:44:16apotheonI figured out why the Nimrod port maintainer for FreeBSD isn't here: there's no FreeBSD port of Nimrod.
20:45:07Araqapotheon: I used to run an old version on FreeBSD
20:45:56dom96amarsahinovic: That's nice to hear. How exactly does your app code look like? I have heard of this FrameworkBenchmarks thing and was thinking about submitting but I wanted to get Nimrod/jester as fast as possible first. In fact just a ~day before the release of 0.9.2 I have committed a patch for the SCGI module which makes it a lot more efficient. I have also ran some benchmarks and in the 'wrk' benchmark Nimrod performs better than Go whereas using weigh
20:45:56dom96ttp Go performs better. Jester still however has many areas for improvement and I will definitely implement those ASAP.
20:46:00*zahary joined #nimrod
20:46:42dom96we used to have a netbsd builder
20:47:01dom96but it started failing due to some path problems IIRC
20:53:35amarsahinovicdom96: http://pastebin.com/fpJx7FBU here is the code for jester and go version, and benchmark results from ab
20:54:52*apotheon twiddles his thumbs while something downloads.
20:55:05apotheon"I'm downloading!" is the new "I'm compiling!"
20:56:07fowlthe go version sends a lot more bytes
20:56:23amarsahinovicyeah, I just saw that too
20:56:38dom96indeed, also the Nimrod version is not async.
20:56:55dom96So it will not handle concurrent requests well.
20:57:08amarsahinovic:facepalm:
20:57:46amarsahinovicI benchmarked the wrong url for Go
20:57:54amarsahinovicit seems that they are the same
20:58:07amarsahinovicsorry guys :)
20:58:13dom96Did you compile the Nimrod version with -d:release?
20:58:39amarsahinovicyeah, I get around 2k requests per second for both on average
20:58:51amarsahinovicalthough nimrod jumps from 1.6k to 2k
20:59:09amarsahinovicand the byte size is the same now
21:01:40dom96Yeah, btw. The httpserver module which jester uses is very much unoptimised, using it in async mode won't buy you much.
21:02:41dom96And I optimised the scgi module first because that is how nimforum and nimbuild are deployed (both use jester and communicate with nginx through SCGI)
21:03:24dom96Your Go app on the other hand spawns multiple threads, so it's a bit unfair :P
21:05:13amarsahinovicyeah, it does, but even with that, nimrod/jester are not far behind
21:05:54dom96indeed, that shows just how efficient Nimrod really is :)
21:06:02amarsahinovicyeah
21:06:53amarsahinovicand it seems like a nice language, especially since it looks a lot like Python, which is a good thing for me :)
21:07:09dom96That's exactly what attracted me to it in the first place :)
21:07:19apotheonAt what point do the build instructions for Unix require root?
21:07:39dom96apotheon: ./install
21:07:51apotheon./build.sh
21:07:51apotheonbin/nimrod c koch
21:07:51apotheon./koch boot -d:release
21:07:57apotheonI don't see ./install in there.
21:08:11dom96oh sorry, you said build instructions.
21:08:20dom96I don't think it's required at all.
21:08:37dom96except if you want to install it to /usr/bin
21:08:41amarsahinovicdom96: you should submit your benchmark even if you don't manage to get all the optimizations you wanted, perhaps only the json benchmark part for now
21:08:43apotheonhrm
21:08:53apotheonI guess I'm not sure what exactly is going on with these instructions.
21:09:39dom96amarsahinovic: hrm, perhaps. But I would rather give Nimrod a good position from the start.
21:09:51dom96apotheon: What's the problem?
21:10:24apotheonI have no idea what those steps I quoted actually *do*, specifically, so I'm not sure that'll give me a working install.
21:10:51apotheonOh, there's another step after it.
21:11:10apotheonI guess "koch install [dir]" is where it'd require root, then.
21:11:55dom96releases use an install.sh to do installation, whereas to install the latest from git you would use ./koch install
21:12:23dom96./build.sh builds the C sources (contained in a csources.zip file in the git repo)
21:12:36Araqdon't install it, just add it to your $PATH
21:12:41apotheonIn my case, I guess that'd probably be "./koch install /usr/local/bin".
21:12:45dom96you then build koch with 'bin/nimrod c koch'
21:12:57dom96and ./koch boot bootstraps the compiler.
21:15:09apotheonAraq: Why not install it?
21:15:18apotheonThat's what /usr/local/bin is for.
21:17:17Araqwhy not install it? because updating is easier then
21:18:11Araqplus no matter how hard you try to convince me of the opposite, distributing a single program all over the file hierarchy is absurd
21:19:30apotheonuhh
21:19:34AraqI don't care if you like to mount only /bin to debug your OS etc.
21:19:58Araqit's 2013 and you can use a live CD/DVD instead
21:19:59apotheonDoes the install do something other than copy a binary to the appropriate place?
21:20:33apotheonIs there a bunch of stuff that gets spread around somewhere.
21:20:50Araqsure, the stdlib goes into /usr/lib or whatever
21:21:23NimBotnimrod-code/nimbuild 6595937 Dominik Picheta [+0 ±1 -0]: Builder: ``git clean`` is not used to remove all untracked files
21:21:37dom96damn, that was supposed to be "now"
21:23:05apotheonWait -- do you mean that you think I should leave everything dumped in the git checkout, and symlink the binary to something in my path?
21:23:08*apotheon boggles.
21:23:30apotheonMaybe I won't play with the current git head, and will just use the release after all. That's kinda crazy.
21:25:17apotheonGit checkout gone. Starting over with the .zip.
21:33:01dom96amarsahinovic: Here are my benchmark results if you're interested: web.go vs. jester: https://gist.github.com/dom96/01bcbb4c668a27cd4fb0
21:40:15amarsahinovicOn my machine, I get 1909.30 req/sec for web.go and 1935.81 req/sec for jester
21:44:14reactormonkamarsahinovic, statistical abnormalities
21:49:07amarsahinovicfull results: http://pastebin.com/C1PHd2GF
21:50:13amarsahinovicand results vary from 1.2k req/sec to sometimes almost 2.5k req/sec for both web.go and jester
22:00:02*Trix[a]r_za is now known as Trixar_za
22:20:08*zahary quit (Quit: Leaving.)
22:25:09*amarsahinovic quit (Quit: Leaving.)
22:35:57*OrionPK joined #nimrod
23:00:14*Raynes joined #nimrod
23:00:24RaynesGood afternoon good sirs.
23:00:31dom96hello Raynes
23:00:40dom96What brings you here?
23:00:59RaynesI have a question.
23:01:19RaynesAnd the question is very likely the result of my not having read much documentation at all and being lazy and deciding to just ask first rather than read.
23:01:53RaynesSo, Nimrod has first class functions. How do 'procs' fit in with this? What is a proc vs a function, and why aren't they the same thing?
23:03:52dom96A 'proc' is short for 'procedure' and 'procedure' is a synonym for 'function'.
23:04:20RaynesSo they are the same thing? I can define a proc and then pass it around by name to other procs as arguments?
23:04:36dom96Yeah
23:05:04reactormonkRaynes, in case you encounter it, a method is a late-bound function
23:05:06RaynesWhat's the story behind choosing to call them procs as opposed to the commonly accepted and well known 'function'
23:05:20reactormonkRaynes, pascal iirc
23:05:25dom96^
23:05:54RaynesSo the name was taken from pascal?
23:06:09dom96AFAIK the name 'function' is functional, whereas the name 'procedure' is procedural which is what pascal and by extension Nimrod primarily is.
23:06:18reactormonkRaynes, yep
23:06:31reactormonkdom96, oh, we have some functional stuff too, like map
23:06:34RaynesSo, procs in Pascal are *not* first class functions.
23:06:38reactormonkhaven't seen any monads though
23:06:42reactormonk... should add some
23:06:46RaynesSo it seems odd to use the name when it doesn't fit. :(
23:06:48reactormonkRaynes, maybe, I don't know.
23:07:15dom96Raynes: It's just a name, why does Python use 'def', why not 'func'?
23:07:25dom96or 'sub'
23:07:34RaynesWell, because 'def' makes sense. :p
23:07:47dom96how so?
23:08:12RaynesBecause you're defining something and giving it a name.
23:08:47RaynesNimrod could have also used 'def', I imagine.
23:08:56reactormonkRaynes, believe me, language semantics is more important than syntax
23:09:05Raynes*shrug*
23:10:08RaynesI just think that names are important and proc is a confusing one, given that it doesn't really make sense in the context of first class functions. But hey, that's just imo.
23:10:59dom96I think it makes perfect sense; like I said 'procedure' is synonymous to 'function'.
23:10:59reactormonkRaynes, I have stated the exact same argument, but that's too founded in the language itself. Can't change that.
23:12:11RaynesOkay, but I disagree. Function means something to people.
23:12:26fowlso they used to be called subroutines
23:12:29RaynesBut it obviously isn't going to change, so I really just wanted to know rationale.
23:12:38reactormonkperl still has `sub` ;-)
23:12:39RaynesI'm not advocating for a major language change.
23:13:24reactormonkRaynes, the history is that the nimrod compiler was boostrapped in pascal - or a subset thereof. Later converted to nimrod.
23:14:26RaynesThanks guys!
23:16:48reactormonkRaynes, what's your editor of choice?
23:17:08RaynesVim or Emacs depending on which day of the week it is.
23:17:14reactormonk^^
23:17:46reactormonkthere's nimrod support for both of them
23:20:56rgrinbergin OCaml there's no syntax distinction between declaring variables or functions :D
23:21:12reactormonkrgrinberg, they're slightly more functionally oriented
23:21:42rgrinbergwell i'd argue any language with first class functions doesn't benefit too much from having 2 different syntaxes to bind a name to a value
23:21:49rgrinbergbut it's a minor thing so who cares
23:50:46RaynesThat's true.
23:51:09RaynesIt doesn't really concern me though.
23:51:36RaynesI think it makes sense to have different syntax for defining functions and values because you also have var vs let for defining immutable vs mutable things.
23:51:49fowlrgrinberg: what are the two syntaxes you speak of (if you're saying nimrod has this)
23:52:14Raynesvar, let for variables and values vs proc for functions.
23:52:40fowlit doesnt make sense to use var for functions because functions can be overloaded
23:52:46RaynesIn Haskell, for example, they're defined the same way. But in Haskell there is no distinction between values, functions, variables, etc. There is exactly one kind of thing: an immutable value.
23:52:58RaynesWell, so can Haskell functions. It's a matter of syntax.
23:53:10RaynesAnd Nimrod's syntax does not fit this scheme of things.
23:53:13RaynesWhich is fine! :D
23:53:25fowlvar myfunc = proc(a, b: int): int = a + b
23:54:46dom96fowl: To put it in a more haskell-ish way, it would be something like: var myfunc(a, b: int): int = a + b
23:54:56dom96which is basically s/proc/var/ lol
23:58:55RaynesAnyways, I think Nimrod is far closer to Scala than it is to Haskell, ML-languages, etc.
23:59:09RaynesSo the way it does things makes sense, even if I furiously despise the word 'procedure'