<< 06-12-2014 >>

00:01:34Stefan_SalewskiAraq: I just remembered: One reason why Wirth replaces enums with plain integers was, that it was difficult to extend enums in Modula2.
00:02:25dts|pokeballAraq, did you come up with the result variable idea
00:02:56Araqwell he could have looked at Ada and introduced "distinct int" then, but this is all wrong anyway
00:03:06Araqit's a feature that you cannot extend them
00:03:22Stefan_SalewskiI have to admit that I do not know how we extend enums defined in one Nim module later in new user defined modules. Have to read the manual more carefully...
00:03:34Araqso you can easily ensure you have exhaustive case statements
00:03:55Araqexhaustiveness is paramount for correctness
00:04:05Araqand so Wirth should really know better
00:04:34Araqinstead of hunting for the "extensible" cargo cult
00:05:46flaviuAraq: Not counting lisp, Nim is the most extensible language I've seen so far.
00:06:41Araqdts|pokeball: no I stole it from Delphi and Eiffel
00:07:18flaviuPractically all of Nim is based around UFCS
00:09:38Araqflaviu: there are different forms of "extensible" and I'm arguing from wirth's very own point of view here
00:10:11Araqhe stresses correctness and type safety quite a bit in his books
00:10:25Araqand then throws away 'enum'
00:18:49Stefan_SalewskiSorry -- I still wonder why types and constants in Nim can refer only to the same block or stuff defined above. For wrappers that generates some reordering work. What is the great benefit?
00:19:35flaviuStefan_Salewski: Compiler simplicity mostly. If macros get involved, it becomes very hard.
00:20:00flaviuBut why do you need forward declaration for wrappers? Place all the types at the top, and all the procs at the bottom
00:20:30Stefan_SalewskiOK, thanks for explanation.
00:22:07Stefan_SalewskiNo, I really like to keep the order as close to the header files as possible. Stuff that belongs together should be at the same location when possible.
00:22:44Stefan_SalewskiAnd it is not very much work that reordering...
00:22:53EXetoCseems pointless
00:23:38*BlaXpirit quit (Quit: Quit Konversation)
00:24:26flaviuStefan_Salewski: Perhaps a pretty nim wrapper source file and an automatically generated version with the types at the front?
00:25:01flaviuStefan_Salewski: But it doesn't matter too much, Nim's documentation generator places the types at the top anyway
00:26:06Stefan_SalewskiNo, it is not pointless. It helps to read wrapper modules -- that may be necessary to verify or learn... We have not detailed tutorials for all wrapped libs.
00:35:46*Stefan_Salewski quit ()
00:36:24*Matthias247 quit (Quit: Matthias247)
00:43:00Araqdom96: do you know where the tests for the future module hide?
00:43:34*Trustable quit (Remote host closed the connection)
00:44:32dom96Araq: in the future module?
00:45:14Araqnot in my version of it
00:45:30Araqthere are examples in the documentation, however
00:47:32dom96then i can't remember, sorry
00:48:09EXetoCgrep? :>
00:48:45flaviuack!
00:49:28flaviuhttp://beyondgrep.com/
00:50:37EXetoCI have a good shell so I haven't bothered still
00:51:58Araqnice but I prefer nimgrep
00:52:14flaviuEXetoC: As do I, but I'm reminded of that ascii cat each time I use ack :P
00:53:21Araq"The --pager, --regex and --output options are powerful tools for users to manage the output of ack, but with carefully crafted parameters, they can be used to execute arbitrary code."
00:54:05EXetoCflaviu: of what?
00:54:22flaviuEXetoC: http://beyondgrep.com/
00:54:30flaviuthe cat on that page
00:55:05EXetoCgood point
00:55:36flaviuAraq: `.ackrc` is a useful concept, but malicious actors take all the fun out of everything :(
00:56:53Araqflaviu: all I see is the same old design mistakes leading to security issues, repeated forever
00:59:38Araqtext based formats are simply a bad idea and quoting and escaping doesn't work. length prefixed stuff might work much better but then it's a "binary" format
01:00:34flaviuAraq: This isn't an accidental problem. Arbitrary code execution was a *feature*, the full consequences just weren't considered at the time.
01:01:51Araqno, it's because Perl allows arbitrary code in regexes
01:02:12Araqand the regexes in the config file are not shielded (escaped) against that
01:02:23Araqwell that's how I understand it
01:02:28Araqmaybe I'm wrong
01:02:59EXetoC:o
01:03:04flaviu`--pager foo` would execute `foo` with ack's output in `foo`'s stdin
01:04:28flaviu"disallowing the --pager, --regex or --output options in a per-project .ackrc file"
01:04:28flaviuIf `--regex` had led to ACE through bugs, they would have fixed the bugs rather than just disabling the thing.
01:05:19*milosn quit (Ping timeout: 252 seconds)
01:18:46*mko quit (Quit: Bye.)
01:30:03Araqhrm, did anybody ever use the fact that leading \ do not affect operator precedence?
01:30:21Araqcause I'm removing that feature
01:41:13fowlwhy would it
01:41:31fowlyou mean \+ vs -+
01:42:07AraqI mean 3 \+ 4 \* 8 is parsed as 3 + 4 * 8
01:42:25Araqbut 3/+ 4 /* 8 is not
01:43:46EXetoCo rly
01:44:17AraqI added that to the spec to support TR macro meta operators
01:44:37Araqbut even these don't use this feature
01:44:49Araqturned out to be unnecessary
01:46:04Araqif fowl didn't use the feature, it really is safe to remove it from the language :-)
01:46:14Araqfowl: did you use it?
01:46:17fowlno
01:46:23fowli dont use TR macros
01:46:41Araqthe feature has nothing to do with TR macros
01:47:16Araqbut ok, good
02:02:04*AMorpork is now known as AFKMorpork
02:13:48*darkf joined #nimrod
02:18:05*AFKMorpork is now known as AMorpork
02:20:46*flaviu quit (Read error: Connection reset by peer)
02:21:59*flaviu joined #nimrod
02:43:24flaviumy macro works as long as the invocation is in the same file, but it fails if it's not.
02:45:16flaviuI think it's trying to look up the symbols, I'm not sure what's going on.
02:49:30*flaviu quit (Read error: Connection reset by peer)
02:49:52*milosn joined #nimrod
02:50:49*flaviu joined #nimrod
03:03:34*brson quit (Ping timeout: 244 seconds)
03:15:38*saml_ joined #nimrod
03:15:57*BitPuffin quit (Quit: See you on the dark side of the moon!)
03:20:06*saml_ quit (Ping timeout: 244 seconds)
03:33:26*saml_ joined #nimrod
03:56:22*EXetoC quit (Quit: WeeChat 1.0.1)
04:01:29*q66 quit (Quit: Leaving)
04:20:36*flaviu quit (Ping timeout: 250 seconds)
04:23:02*willwillson quit (Ping timeout: 265 seconds)
04:56:34*perturbation quit (Quit: Leaving)
05:21:01*vbtt joined #nimrod
05:21:25vbtthello
05:25:46*vbtt quit (Client Quit)
05:27:06*darkf_ joined #nimrod
05:27:51*vbtt joined #nimrod
05:29:48*darkf quit (Ping timeout: 258 seconds)
05:39:33*vbtt quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
05:48:56*darkf_ is now known as darkf
05:57:11*darkf_ joined #nimrod
06:00:05*darkf quit (Ping timeout: 272 seconds)
06:12:47*darkf joined #nimrod
06:14:29*saml_ quit (Ping timeout: 250 seconds)
06:14:39*darkf_ quit (Ping timeout: 258 seconds)
06:15:13*darkf_ joined #nimrod
06:17:43*darkf quit (Ping timeout: 258 seconds)
06:21:40*hguux_ quit (Ping timeout: 244 seconds)
06:22:26*hguux_ joined #nimrod
06:22:51VarriountMeep
06:24:09VarriountAraq: Unfortunately, I won't be able to help over the weekend... I have 2 exams to study for, and a final project to complete.
06:25:25*brson joined #nimrod
06:25:50*darkf_ is now known as darkf
06:28:15VarriountAlso, for all you linux-lovers who disparage windows over it's performance: You wouldn't *believe* how much is done for the sake of compatibility.
06:48:42*darkf_ joined #nimrod
06:50:41*darkf quit (Ping timeout: 258 seconds)
06:51:16*darkf joined #nimrod
06:53:45*darkf_ quit (Ping timeout: 258 seconds)
07:08:38*flaviu joined #nimrod
07:22:07*bjz_ quit (Ping timeout: 244 seconds)
07:24:40*bjz joined #nimrod
07:30:27*darkf_ joined #nimrod
07:32:51*darkf quit (Ping timeout: 258 seconds)
07:35:55*brson quit (Quit: leaving)
07:43:58*vbtt joined #nimrod
07:57:24*vbtt quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
07:57:37*darkf joined #nimrod
07:59:41*darkf_ quit (Ping timeout: 258 seconds)
08:06:22*darkf_ joined #nimrod
08:07:52*milosn quit (Remote host closed the connection)
08:08:53*darkf quit (Ping timeout: 258 seconds)
08:21:29*gour joined #nimrod
08:29:21*BlaXpirit joined #nimrod
08:33:02*milosn joined #nimrod
08:53:36*bjz quit (Read error: Connection reset by peer)
08:53:41*bjz_ joined #nimrod
09:30:16*vendethiel joined #nimrod
09:46:20*BlaXpirit quit (Read error: Connection reset by peer)
09:46:39*gour quit (Quit: Konversation terminated!)
09:47:15*BlaXpirit joined #nimrod
09:48:50*gour joined #nimrod
10:17:09*Matthias247 joined #nimrod
10:35:09*darkf_ is now known as darkf
10:37:37*vendethiel quit (Ping timeout: 265 seconds)
11:07:29*yglukhov joined #nimrod
11:18:42*gokr_ joined #nimrod
11:20:17*gokr quit (Ping timeout: 240 seconds)
11:26:49*BitPuffin joined #nimrod
11:28:19*yglukhov quit (Ping timeout: 246 seconds)
11:42:07*gour quit (Quit: Konversation terminated!)
11:43:21*bjz_ quit (Ping timeout: 265 seconds)
11:45:00*gour joined #nimrod
11:45:26*Trustable joined #nimrod
11:45:52*gour quit (Client Quit)
11:49:18*gour joined #nimrod
11:51:09*bjz joined #nimrod
11:54:31*yglukhov joined #nimrod
12:02:45*gour quit (Quit: Konversation terminated!)
12:06:26*yglukhov quit (Quit: Be back later ...)
12:06:36*Trustable quit (Remote host closed the connection)
12:08:17*Trustable joined #nimrod
12:11:45NimBotAraq/Nimrod devel cd0f172 juxiliary [+1 ±1 -0]: Fixing extraneous semicolon in jsgen output... 6 more lines
12:11:45NimBotAraq/Nimrod devel 5ee7458 Andreas Rumpf [+1 ±1 -0]: Merge pull request #1709 from juxiliary/devel... 2 more lines
12:14:21Araqflaviu: that's why you should use bindSym
12:15:38*gour joined #nimrod
12:19:12*gokr_ quit (Ping timeout: 258 seconds)
12:30:34*q66 joined #nimrod
12:38:26*gokr_ joined #nimrod
12:41:28*yglukhov joined #nimrod
13:00:44*EXetoC joined #nimrod
13:08:44flaviuIt's hard for me to use bindSym because I'm generating text and having it parsed
13:13:38AraqI see
13:13:50Araqwe can make bindSym more lazy I think
13:15:27Araqgokr_: it was the t5000 test that sometimes deadlocks, right?
13:16:27*johnsoft quit (Ping timeout: 264 seconds)
13:17:06*johnsoft joined #nimrod
13:21:33Araqunfortunately I can't reproduce this on my 64bit linux
13:21:38Araqit never deadlocks
13:21:47Araqalways produces the correct result
13:24:44flaviuI don't see any deadlocks in the waterfall: http://178.62.143.63:8010/waterfall
13:33:38gokr_yrah t5000
13:34:04*willwillson joined #nimrod
13:36:39Araqwell there is still an enhancement from Jehan we can try
13:36:45Araqbut see you later
13:50:44*gokr joined #nimrod
13:52:44*gokr_ quit (Ping timeout: 258 seconds)
13:53:30*gokr_ joined #nimrod
13:55:02*gokr quit (Ping timeout: 258 seconds)
13:58:09*willwillson quit (Ping timeout: 245 seconds)
13:58:36*vendethiel joined #nimrod
14:05:00*gokr_ quit (Ping timeout: 258 seconds)
14:25:09*allany joined #nimrod
14:35:14*BlaXpirit quit (Ping timeout: 245 seconds)
14:36:48*allany quit (Quit: WeeChat 1.0.1)
14:38:53*gokr_ joined #nimrod
14:41:36*zio_tom78 joined #nimrod
14:41:40zio_tom78Hi to everybody
14:42:04*milosn quit (Remote host closed the connection)
14:53:47*yglukhov quit (Quit: Be back later ...)
15:10:26*zio_tom78 quit (Quit: Cheers to everybody connected!)
15:17:35*j3rky joined #nimrod
15:17:40flaviuHas anyone tried using the VM for runtime code execution?
15:29:01EXetoCI couldn't figure out how
15:29:47flaviuI guess with all the problems with CASS, using it as a library won't be much easier.
15:34:15dom96Does this build bot even work?
15:34:24dom96It seems to time out testament most of the time
15:34:52flaviudom96: Huh? I don't see any timeout issues.
15:36:12dom96http://178.62.143.63:8010/builders/windows-x32-builder/builds/15/steps/Run%20Testament/logs/stdio
15:36:34dom96also where can you check the test results?
15:37:29flaviudom96: I don't think it uploads the database atm
15:50:15*q66[lap] quit (Quit: Textual IRC Client: www.textualapp.com)
15:50:52*q66[lap] joined #nimrod
15:53:20gokr1flaviu: The timeout on t5000 happened a while back, I had to kill it then.
15:53:39gokr1It only seems to happen occasionaly.
16:03:37dom96Interesting: http://plan9.bell-labs.com/wiki/plan9/Mouse_vs._Keyboard/index.html
16:06:42*darkf quit (Quit: Leaving)
16:18:42*BlaXpirit joined #nimrod
16:20:33EXetoCa relevant vim plugin comes to mind
16:31:49EXetoCfor one of the supposed issues related to keyboard editing
16:42:24*yglukhov joined #nimrod
16:46:11EXetoCand vi does some things worse than vim obviously
16:47:12*yglukhov quit (Ping timeout: 256 seconds)
17:07:14*milosn joined #nimrod
17:19:26*willwillson joined #nimrod
17:23:42flaviuI need to close a steam, but osproc says not to do so.
17:23:50NimBotnim-lang/nimble master 8da2fe7 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Fixes crash when running `nimble path something`.
17:23:50NimBotnim-lang/nimble master 8753fa2 Dominik Picheta [+0 ±1 -0]: Merge pull request #71 from gradha/pr_fixes_path_crash... 2 more lines
17:25:19NimBotnim-lang/nimble master 7384083 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds babel spec support for path action.
17:25:19NimBotnim-lang/nimble master 28f4c9d Dominik Picheta [+0 ±1 -0]: Merge pull request #72 from gradha/pr_supports_babel_spec_for_path_action... 2 more lines
17:40:26*j3rky quit (Ping timeout: 258 seconds)
17:47:11dom96Varriount: I'm going to take the server down to create a snapshot.
17:49:58*AMorpork is now known as AFKMorpork
18:06:45*yglukhov joined #nimrod
18:10:50*yglukhov quit (Ping timeout: 244 seconds)
18:24:13*j3rky joined #nimrod
18:28:13*j3rky quit (Client Quit)
18:29:41flaviuIsn't a `var T` essentially `T*`?
18:30:03flaviuI can't seem to be able to convert `var T` to `ptr T`
18:33:32willwillsondon't you just use addr?
18:33:45dom96Using 'addr' should work.
18:34:52flaviuIt might, let me check
18:56:59*AFKMorpork is now known as AMorpork
18:59:18flaviuIt does seem to work
19:00:02flaviuShould destructors really require that their parameter be a var?
19:00:37flaviuie, `let foo = initMyType()` will fail since foo is by a let
19:01:09flaviubut let's contract can be broken since nothing will be around to observe it broken
19:07:44fowlyeah thats why let x = inittable... doesnt work right
19:11:54dom96Destructors are still buggy.
19:16:14dom96Araq: ping me when you're here
19:37:42*BitPuffin quit (Ping timeout: 264 seconds)
19:38:36*BitPuffin joined #nimrod
19:46:21*gour quit (Quit: Konversation terminated!)
19:57:12*yglukhov joined #nimrod
20:11:07*AraqinTrouble joined #nimrod
20:11:21AraqinTroubledom96_: ping
20:13:40dom96lol
20:14:23dom96AraqinTrouble: oh yeah, forgot you connect to the BNC via picheta.me
20:16:25AraqinTroubleno worries
20:22:03dom96AraqinTrouble: I copied the nim site to the new VPS
20:24:47AraqinTroubleyay
20:24:59AraqinTroublechange the logo please
20:31:56*tinAndi joined #nimrod
20:41:01*dom96- joined #nimrod
20:41:31*Araq_ joined #nimrod
20:43:52*dom96- quit (Changing host)
20:43:52*dom96- joined #nimrod
20:44:20dom96-ffs chanserv
20:44:42dom96AraqinTrouble: You should be able to connect to the new bnc now.
20:46:00*Araq quit (Quit: Bye!)
20:46:01*dom96 quit (Quit: Bye.)
20:46:01*Amrykid quit (Quit: Goodbye!)
20:46:01*dom96- is now known as dom96
20:50:02dom96AraqinTrouble: do you have some time now?
20:53:54*dom96 is going to watch TMNT
21:09:34*milosn quit (Ping timeout: 255 seconds)
21:14:19*AraqinTrouble quit (Quit: Page closed)
21:23:18*ARCADIVS joined #nimrod
21:28:20*milosn joined #nimrod
21:39:09*starless joined #nimrod
21:39:25starlesshey, does Nimrod still have default return values?
21:39:42starlessI'd check but it's not installed on this machine
21:40:04Araq_install it
21:40:17Araq_it doesn't require root access to install it
21:40:36Araq_but to answer your question: yes.
21:40:44starlessAraq_: But if it has default return values I'm just going to uninstall it again :P
21:40:57starlessthanks
21:40:59Araq_why?
21:41:01Araq_no wait
21:41:13starlesswaiting.
21:41:23Araq_you can use warning[Uninit]:on and then the compiler complains
21:41:38starlessaha! is that new?
21:41:46Araq_not really
21:41:54Araq_but people don't know about it
21:42:06starlessmore people should!
21:42:27Araq_why? it's a non issue for anybody who writes more than 10 lines of Nim code ...
21:43:17starlessreally? I feel like I could see where control flow reached the end of a function that just decided to return 0 in 10 lines of code
21:43:34starlessproblems are more likely to arise in 10000 lines of code
21:44:19Araq_problems are everywhere when you speculate over everything
21:44:50starlessbut I guess sacrifices have to be made when there's so many advantages that can be gained
21:45:06starlesslike...not having to write "return 0"
21:46:45EXetoCthat's the reason for not using the language? ok
21:48:18starlessEXetoC: the possibility of a silently passing mistake in every procedure I write? I guess that's not much to consider
21:49:18starlessLook, I'm not trying to be a dick. I just had extremely high hopes for Nimrod. I don't want to see a lot of hard work go to waste. Tell me why default return values are useful.
21:49:54starlessI can't be convinced they're not a problem. That may be stubborness on my part.
21:50:07starlessstubbornness*
21:50:25Araq_well you know
21:50:30EXetoCall I can say is that most people don't seem to have a problem with it
21:50:35Araq_whenever c# tells me to initialize something
21:50:44Araq_I use ' = 0'
21:50:48Araq_or = false etc.
21:51:09Araq_it's the obvious fix for 99.9% of the cases
21:51:16Araq_so Nim shuts up and does the right thing
21:51:51Araq_that also has the advantage that the language defintion doesn't depend on a control flow analysis
21:52:07Araq_and apart from you nobody ever complained
21:52:36EXetoCI recall one other guy complaining about it
21:52:49Araq_filwit?
21:52:55Araq_well yes
21:53:03Araq_he complained and then used it
21:53:07Araq_and was happy
21:53:15EXetoCI don't know
21:54:49starless1) The default initialization of variables is not necessarily tied to a default return value. You guys happen to have return values represented as a variable, which then ties it to local variable initialization. You can't tote the advantages of not having to initialize local variables because you could so easily just require a return statement instead of having a return parameter
21:55:34Araq_but not requiring a dummy 'return 0' statement is indeed an advantage
21:55:43starless2) The lack of need for control flow analysis in the compiler is not an advantage to anyone but the compiler implementers. They matter, but not nearly as much as the users.
21:55:44Araq_in my experience
21:56:21starless3) I may be the only one complaining about it, but you seem to be trying to convince me. So here I am.
21:56:59starlessand in regards to point (2), isn't that kind of what dropping mustache braces and semicolons was all about? forgetting about easier parsing in favor of the user?
21:57:21starlessand point (1); why discard single expressions? is explicit not better than implicit?
21:57:47Araq_no, that's just a lame slogan with no meaning
21:58:05Araq_sometimes explicit is better, sometimes it's not.
21:58:18Araq_otherwise I would program in assembler.
21:58:38EXetoCI think it matters less in cases like this, because once you learn about it, you'll be able to infer what's going to happen
21:58:39starlessI'll give you that, but why do you discard expressions?
21:58:40Araq_in asm everything is explicit.
21:58:59Araq_because it turned out to find real bugs
21:59:01Araq_again
21:59:05Araq_I have c# for years
21:59:16Araq_and that feature of c# never found a single bug
21:59:31Araq_and now that we have 'not nil' in the language we have to do that control flow analysis and warning[Uninit] was a side-effect of this
21:59:44Araq_but the language didn't start with that
22:00:13Araq_and I don't see the point of making people updating hundreds of thousands of lines of code when I can see no benefit
22:00:49starlessAraq_: people have used hundreds of thousands of default return values?
22:01:00starlessAraq_: I'd shut up if you showed me 20
22:01:19Araq_the compiler itself uses that feature everywhere
22:01:25Araq_try it
22:01:27Araq_enable it
22:01:30Araq_and patch the compiler
22:01:54Araq_maybe I'm wrong and then I'll re-consider my position
22:02:26starlessand what do I get in return for patching the compiler? :)
22:03:22Araq_you will not be regarded as a troll anymore then
22:03:39starlessit's unfortunate that you think I'm trolling!
22:04:14starlessI think Nimrod is a beautiful language. I was bothered so much by the default return values that I thought about it for months!
22:04:25starlessI came back just to ask because I was in such disbelief.
22:05:17starlessAnyways, thanks for your time.
22:05:44Araq_you're still welcome
22:06:42Araq_starless: btw that feature has been copied from Eiffel
22:06:48EXetoCother than the satisfaction of having the language behave the way you want it to? a dollar in addition perhaps? :p
22:06:52Araq_it's not even my invention
22:07:00EXetoCjust for additional motivation
22:07:23starlessAraq_: I know; you told me last time
22:07:42Araq_and Eiffel did it for exactly the same reasons
22:08:06Araq_and btw C# does the checking slightly differently than its spec suggests, but maybe they fixed that by now.
22:08:37Araq_these things are not trivial and yet you suggest that I'm a lazy fool :P
22:08:47starlessAraq_: I would never
22:09:00starlessand hold on. there's something more important to discuss here
22:09:07starlessI don't consider your decision uninformed
22:09:10starlessI don't understand it
22:09:26starlessI, in no way, intended to insult anyone
22:09:28starlessdesigners or users
22:11:24starlessWe'll have to disagree for now.
22:11:30starlessI'll be looking at the compiler code.
22:14:34Araq_starless: if you are obviously right and I'm obviously wrong can we perhaps still agree that it is a minor issue and that maybe you can like the rest of language enough to use it?
22:19:36flaviustarless: I'm not part of the project, but I'm sorry about the less than warm welcome.
22:19:36flaviu`result` is frequently used equivalently to a functional fold. Having to explicitly write `return result` isn't too bad, but I assume Araq wanted to encourage usage of this sort of pattern, and reducing typing is one of the few ways a language writer has of doing so.
22:19:54*untitaker quit (Ping timeout: 265 seconds)
22:21:03starlessAraq_: You keep applying very coarse description to this discussion. I'm not obviously right. You're not obviously wrong. There's some misunderstanding and some difference in opinion.
22:21:38Araq_no, I said 'if', maybe I should have said 'EVEN IF'
22:22:06Araq_and it's not about the difference in opinion
22:22:11starlessHowever, I would not consider it a minor issue. flaviu, it's alright about the discourse; it's actually quite mild compared to most of freenode :p
22:22:29Araq_it's that you dismiss the complete language because of this!
22:23:11starlessflaviu: could you explain "reducing typing"?
22:23:42starlessAraq_: I may use the language yet.
22:24:14starlessflaviu: oh. keystrokes?
22:24:27flaviustarless: `return result` -> ``, `var result: ReturnType = initBlah`, `result = initBlah`
22:24:27flaviualthough the second example could use type inference
22:24:29starlessI read that as typing like type systems
22:24:29flaviustarless: Yes
22:24:49flaviuAh, I see.
22:26:26starlessflaviu: and when you say "to a functional fold", do you mean as the base value in a fold? as in list comprehensions?
22:26:41*untitaker joined #nimrod
22:28:24*shevy joined #nimrod
22:29:09flaviuAs in `result = 0; for i in 0..20: result += i` = `foldl (\prev curr -> prev + curr) 0 [0..20]`
22:29:29flaviuexcuse syntax errors in my haskell, I don't actually know the language.
22:30:48starlessI don't either...but I can see how it can be used as a base value for computation
22:37:08dom96starless: As someone who has been writing Nim code for the past ~4 years. Believe me that default return values cause no issues whatsoever.
22:40:45*Demos quit (Read error: Connection reset by peer)
22:41:01starlesshm. and this has been your experience as well, flaviu, Araq_, EXetoC, others?
22:43:09flaviuI haven't had troubles with accidentally not returning anything so far. I haven't had any really big projects yet though.
22:46:59Araq_starless: as I said, not a single bug. however
22:47:18Araq_that 'nil' is the default for strings/seqs surely lead to bugs
22:48:14Araq_especially for newcomers
22:48:49Araq_but that's not your what you were talking about
22:50:45*tr|nn| joined #nimrod
23:07:53*ekarlso- quit (Ping timeout: 240 seconds)
23:11:04*yglukhov quit (Quit: Be back later ...)
23:19:05*tr|nn| quit (Quit: Verlassend)
23:19:21*shodan45 joined #nimrod
23:43:27*quasinoxen quit (Ping timeout: 258 seconds)
23:44:48*quasinoxen joined #nimrod
23:50:16flaviuThere's deepCopy, is there deepFree?
23:53:49*gokr_ quit (Quit: IRC for Sailfish 0.8)
23:54:07Araq_flaviu: what's a deepFree?
23:54:37Araq_for x in fields(y): if type(x) is ptr: free(x) ?
23:54:38flaviuIf deepcopy follows all pointers and copies them to a new place in memory, deep free would release the allocation
23:54:50flaviuYes, except more recursive.
23:55:10flaviuAnyway, I've found a workaround.
23:55:34Araq_the problem is that 'ptr' doesn't say it has been allocated with system.alloc
23:55:46Araq_so this cannot be done reliably
23:56:07Araq_deepcopy only copies 'ref' because for these the underlying allocator is known
23:56:24flaviuOh, I didn't realize that.
23:56:37Araq_also that 'ptr' is not deeply copied is a feature for inter thread communication
23:56:52flaviuRight, you can avoid copying giant shared buffers and such.