<< 24-11-2017 >>

00:07:07*MJCaley quit (Quit: MJCaley)
00:13:10*sendell quit (Remote host closed the connection)
00:20:39*MJCaley joined #nim
00:24:17*dddddd quit (Remote host closed the connection)
00:52:27*skrylar joined #nim
01:17:47*koppeh is now known as copygirl
01:20:27*vlad1777d quit (Ping timeout: 250 seconds)
01:30:42*elrood quit (Quit: Leaving)
01:43:07*xkapastel quit (Quit: Connection closed for inactivity)
01:56:25*Tanger quit (Remote host closed the connection)
01:57:12*vivus quit (Quit: Leaving)
01:59:59*Serenit0r joined #nim
02:00:48*skrylar quit (Ping timeout: 268 seconds)
02:01:27*couven92 quit (Quit: Client Disconnecting)
02:03:05*Serenitor quit (Ping timeout: 240 seconds)
02:13:24*skrylar joined #nim
02:29:27*xkapastel joined #nim
02:31:20*chemist69 quit (Ping timeout: 255 seconds)
02:41:32*MJCaley quit (Quit: MJCaley)
02:45:02*chemist69 joined #nim
02:51:22*mwbrown quit (Ping timeout: 268 seconds)
02:53:07*mwbrown joined #nim
03:10:45*JappleAck joined #nim
03:14:01*Tanger joined #nim
03:15:05TangerHey folks, how's it going? Quick question, is the Options module and it's get() proc the best ways to a property on a type for no value?
03:16:47FromGitter<superfunc> @Tanger option is a nice way to semantically represent "no value", yes
03:17:29FromGitter<superfunc> Note that you'll want to ensure it has a value before calling .get(), otherwise catch the exception thrown when it doesn't
03:17:39*endragor joined #nim
03:17:39*endragor quit (Remote host closed the connection)
03:18:07*endragor joined #nim
03:20:09TangerAwesome superfunc, thanks for that! Was too used to just checking for nil/null
03:21:06FromGitter<superfunc> @Tanger np, I have a library which enforces checking on optional types, if you're looking for that sort of thing github.com/superfunc/maybe
03:27:49FromGitter<Varriount> @superfunc I think I like that more than the module in the stdlib
03:32:39TangerOh yeah, I like that much better @superfunc
03:33:40*dexterk joined #nim
03:40:35FromGitter<superfunc> Cool beans, glad you like it :)
03:48:39*marenz__ joined #nim
03:52:01*marenz quit (Ping timeout: 248 seconds)
04:12:17FromGitter<kayabaNerve> Where are built in operators defined, such as .. ?
04:13:56FromGitter<kayabaNerve> system.nim, right?
04:33:05*marenz__ quit (Ping timeout: 248 seconds)
04:34:12FromGitter<superfunc> @kayabaNerve yeah slice things are defined there
04:36:14*yglukhov joined #nim
04:54:57*jsgrant quit (Ping timeout: 240 seconds)
04:56:51*yglukhov quit (Remote host closed the connection)
05:02:25*jsgrant joined #nim
05:10:03*dexterk quit (Quit: Konversation terminated!)
05:17:49*yglukhov joined #nim
05:22:09*yglukhov quit (Ping timeout: 248 seconds)
05:25:09*NimBot joined #nim
05:38:25*yglukhov joined #nim
05:42:35*yglukhov quit (Ping timeout: 255 seconds)
06:07:22FromGitter<mratsim> Regarding options/maybe, @Araq is the future `opt` base type also part of newruntime?
06:22:57*miran joined #nim
06:26:07*nsf joined #nim
06:40:19*yglukhov joined #nim
06:44:49*yglukhov quit (Ping timeout: 248 seconds)
06:58:43TangerHey folks, not sure if this is the right place, but I'm trying to get a package off of nimble, but it appears that the .nimble file is old-style syntax
06:59:15TangerSo it just bombs as soon as I include it as a dependency because the first line of the nimble file is [Package] instead of #Package
07:01:21*jsgrant quit (Ping timeout: 248 seconds)
07:01:22TangerBut it bombs when it's parsing the .nimble file saved to /tmp/nimble_***
07:06:43*jsgrant joined #nim
07:18:00*yglukhov joined #nim
07:22:34FromGitter<superfunc> Hey @Tanger, is this for my library we were discussing?
07:25:16FromGitter<superfunc> In case it is, you should be able to run `nimble install [email protected]` to get a change I just pushed which cleans up the nimble file
07:27:35TangerAh, awesome, thanks again @superfunc
07:31:13FromGitter<superfunc> No problemo
07:32:32*miran quit (Ping timeout: 260 seconds)
07:46:49FromGitter<mratsim> @Varriount @Araq, after tinkering for a few hours, I have definite proof that copy-on-write does not work cleanly for a neural net library so I will use reference semantics by default and require cloning for deep copies. ⏎ ⏎ 1) 1. increasing and decreasing the refcounter in tight loops seems quite costly, I didn’t benchmark properly on my full bench suite, but my incRef/decRef proc were taking 1-3% on a single
07:46:49FromGitter... function that called exp and log all over the place ⏎ 2) 1bis. potential idea, instead of having a counter: just have a boolean “shared”, when doing assignment, changed shared to true, when doing `=sink`do not change it. —> when “shared is true, mutation copies”. This avoids keeping track of the refcounter. ⏎ 3) 2. Except ... [https://gitter.im/nim-lang/Nim?at=5a17ce69ffa3e37919b30d60]
07:48:59Araqshow me this proof please :-)
07:49:43Araqbut benchmark numbers don't really count, I would like to understand the problem
07:54:34FromGitter<mratsim> Here: https://github.com/mratsim/Arraymancer/blob/master/src/autograd/ag_data_structure.nim#L44-L50 ⏎ ⏎ “Variable” is the wrapper for Tensors in neural networks graph
07:55:55FromGitter<mratsim> so 1bis is not feasible, because as soon as you wrap a tensor it will be marked “shared"
07:56:13*Ven joined #nim
07:56:37*Ven is now known as Guest66176
07:57:33FromGitter<mratsim> for 1. a variable is referred to in a “tape” —> sequence of operations during the forward pass that we rewind in the backward pass
07:58:07FromGitter<mratsim> so refcount is always >1
08:02:52FromGitter<mratsim> I’ve also noted that context copying (by ref) triggers ref counting on the whole graph: ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ So is that the famed factorial complexity? :P [https://gitter.im/nim-lang/Nim?at=5a17d22bffa3e37919b31e63]
08:04:47*Vladar joined #nim
08:05:30AraqI don't understand anything of this
08:11:41*Arrrr joined #nim
08:11:41*Arrrr quit (Changing host)
08:11:42*Arrrr joined #nim
08:19:07FromGitter<mratsim> Lol well just imagine a atomic ref counted object in a direct acyclic graph
08:20:17FromGitter<mratsim> The parents have a ref to their child, the children to their parents.
08:21:02FromGitter<mratsim> (children to their parents was because it was simpler at first will try without it in the future)
08:21:37FromGitter<mratsim> And I also keep a list of all the nodes existing in this graph
08:24:42FromGitter<mratsim> (A node is an operation like + - * /, it holds 2 Tensors the result of the operation, and the gradient tensor.)
08:28:21Araqbackpointers mean you don't have an "acyclic" graph at all.
08:28:23*vlad1777d joined #nim
08:28:41*floppydh joined #nim
08:31:14*yglukhov_ joined #nim
08:31:15*yglukhov quit (Read error: Connection reset by peer)
08:35:02*sendell joined #nim
08:35:14*claudiuinberlin joined #nim
08:36:16*vlad1777d quit (Ping timeout: 248 seconds)
08:37:16FromGitter<mratsim> Yes, in it's usage it is, I traverse in one way for "normal" computation (*, -, +, convolution, loss function, etc) and then the other way for gradients. There is no sudden jump to the middle of the graph.
08:39:05FromGitter<mratsim> Anyway I have a graph + a seq with references of all Tensors involved so copy-on-write will always copy on mutation.
08:40:30Araqcan't you ignore the reference and do COW with RC==2 ?
08:40:41Araq(or not count it at all)
08:47:23*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
08:47:36*claudiuinberlin joined #nim
09:03:05*yglukhov_ quit (Remote host closed the connection)
09:09:39*PMunch joined #nim
09:23:07*xkapastel quit (Quit: Connection closed for inactivity)
09:44:37*yglukhov joined #nim
09:45:35FromGitter<mratsim> I fear like this solution becomes more complex than the problem and that it won't scale in huge graph
09:46:52FromGitter<mratsim> 1) performance oriented users will have to jump through hoops to avoid COW (system.`=`(dst, src))
09:47:44FromGitter<mratsim> +*
09:49:28*yglukhov quit (Ping timeout: 268 seconds)
09:51:25*dddddd joined #nim
09:51:39FromGitter<mratsim> I will try to find a way to not increase refcount when in a container to compare.
09:57:48FromGitter<mratsim> Alternatively, if it's possible in Nim I could have proc return a shallow copy by const value (so only assignable to let/const or used as non-mutable argument)
09:59:46FromGitter<mratsim> This way no refcount to keep or whatever to keep and everything is determined statically at compile-time.
10:06:42FromGitter<mratsim> I can open a feature request if you think it is worth it. It can probably use this syntax: `proc foo(bar: BigObject): BigObject{`let`,call} =`
10:09:51*arecaceae quit (Read error: Connection reset by peer)
10:10:11*arecaceae joined #nim
10:12:47*couven92 joined #nim
10:13:03Araqcreate a feature request so that I know what you're talking about :P
10:14:26alexday{.async.} what is meaning of this?
10:14:32alexdayhttps://nim-lang.org/docs/asynchttpserver.html
10:15:09couven92alexday, it's marking the proc as async, much like the `async` keyword in C#
10:16:06alexdayI know async in javascript :P
10:16:15alexdaybut I get it
10:18:03FromGitter<mratsim> Will do after lunch.
10:19:20FromGitter<mratsim> Seems like an awesome way to approach documentation: https://www.divio.com/en/blog/documentation/
10:23:39FromGitter<Varriount> @mratsim Did you find that link on reddit or hacker news?
10:24:15FromGitter<mratsim> Reddit r/programming
10:24:47FromGitter<Varriount> I can't seem to connect, so I wonder if it might be the hug of death
10:44:09*Guest66176 quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:46:38*Ven joined #nim
10:47:03*Ven is now known as Guest10002
10:52:22*skrylar quit (Ping timeout: 268 seconds)
11:02:29*Guest10002 quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:06:23*Ven joined #nim
11:06:47*Ven is now known as Guest67205
11:10:42*marenz__ joined #nim
11:15:20*Guest67205 quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:27:46couven92if I write my own new proc for MyRefType, will it get precedence over nim stdlib new?
11:27:58couven92(Is that how I should do it?)
11:30:10cremHow does it allocate memory? Does it call system.new inside?
11:30:33cremAnyway, I heard that the usual approach is to have newMyRefType() function
11:30:46couven92ah okay... thanks
11:31:04cremwhich usually starts with new(result)
11:33:20FromGitter<mratsim> @araq here you go: https://github.com/nim-lang/Nim/issues/6793
11:33:22FromGitter<Varriount> @mratsim Wow, I'm bookmarking that.
11:34:09FromGitter<Varriount> I feel like Nim (the language) covers one, area, the technical documentation, fairly well.
11:34:24FromGitter<Varriount> The other areas need work
11:37:00FromGitter<mratsim> Yes completely agree, I wonder how the cookbook is doing.
11:38:31cremAs for documentation, I don't like that that https://nim-lang.org/docs/lib.html page takes ~1-2 seconds before search works. Slows development down!
11:39:36*couven92 quit (Read error: Connection reset by peer)
11:39:48AraqIMO the technical aspects are underrated. we need 'executableExample' and code snippets that are tested by the CI
11:40:06*couven92 joined #nim
11:40:33Araq"just write better docs" is wrong, first the tooling needs a couple of more features
11:40:52Araqotherwise the documentation is always at the risk of becoming outdated
11:41:42Araqand since we control the docgen these things are rather easy to do
11:42:39cremIs there interactive nim-based REPL shell? Like python has. I remember seeing mention of something like that somewhere, but cannot find it now.
11:43:35dom96Indeed, there are multiple doc gen improvements that I have been planning for a while now.
11:43:52dom96crem: 'nim secret' but it doesn't support FFI
11:44:55cremThat's good enough, just wanted to switch from python to nim for small tasks. Including calculator+like
11:45:12alexdayI miss two things in nim. one is an ocaml/rust/elixir like match operator and the other is iterators nd generators like in js
11:46:13Araqmatch is in a nimble package
11:46:23Araqnot sure what an 'nd generator' is
11:46:45cremI still haven't written much in nim, but the more I write, the less I miss. :) My experience with Go in the same timeframe was the opposite.
11:47:55alexdayniceeeee. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators is this what`iterator` in nim does?
11:49:56cremKind of, but as far as I remember, the only place where iterators can be used in nim are for loops.
11:50:46Araqyou can use them and single step through them, but ... er ... don't do that :-)
11:52:53cremAh yes, you can call them, and wierdly you have to pass the same parameters on every call. And what happens if you pass different parameters is a secret.
11:55:06alexdayI am thinking of one use case, I have an http api endpoint which returns paginated result, and each result is an user profile object. so if someone wants to find by name, I can call use yield there, although I can write a function that accepts an offsets and makes request. and everytime the name doesn't match I call it. not sure
11:57:02Araqcrem, I suppose it's really one of my worst designs ... :-)
11:57:18Araqthe idea was to make it close to ordinary closures work
11:57:25Araq*to how
12:00:51*gangstacat joined #nim
12:09:57couven92Do we have a NimScript-able quoteShell proc?
12:11:13couven92The actual quoteShell is in osproc, which obviously cannot be imported in a nim script
12:15:17*chemist69 quit (Ping timeout: 258 seconds)
12:16:38*Ven joined #nim
12:17:02*Ven is now known as Guest48862
12:23:22AraqquoteShell should be in ospaths
12:23:33couven92Araq, shall I put it there?
12:26:56couven92Is there a way to define a symbol? like #define MY_MAGIC_CONST in C?
12:27:26couven92so that I can later use it in a `when defined(myMagicConst)` block?
12:28:57*chemist69 joined #nim
12:30:02Araqconst myConst = 4
12:30:06Araqwhen myConst == 4:
12:30:18Araqis typo safe.
12:31:23couven92hmmm okay... I guess I rather do it like this: `when isMainModule or defined(debugComInterfaceMacro):` (it's just easier) and I like it that way, since I am doing a helper library, so isMainModule should usually be false
12:32:04couven92Okay, back to quoteShell, Araq I will do a quick PR for that :)
12:33:47Araqok, thanks
12:34:11Araqremember that osproc needs to export this symbol in order to not break code
12:35:16couven92okay, so `from ospaths import quoteShell, quoteShellWindows, quoteShellPosix` and then `export quoteShell, quoteShellWindows, quoteShellPosix` ?
12:38:04Araqyeah
12:38:31couven92what happens now, if someone imports both osproc and ospaths?
12:38:45couven92do we get abiguity on quoteShell?
12:39:03couven92s/abiguity/ambiguity/^
12:43:50Araqyes
12:44:02couven92anything to do about that?
12:48:18Araqthere is no ambiguity if osproc exports the symbol
12:48:23Araqonly if it reimplements it
12:48:50couven92ah, okay that's great then :)
12:52:48*Arrrr quit (Read error: Connection reset by peer)
12:53:53*cspar quit (Ping timeout: 248 seconds)
12:56:16*dddddd quit (Remote host closed the connection)
12:57:53*alex__ joined #nim
13:00:44*gangstacat quit (Quit: Ĝis!)
13:01:30FromGitter<couven92> I cannot use a macro as pragma on a type declaration? :(
13:02:25FromGitter<couven92> E.g. type MyMagicType {.magicMacro.} = ...
13:02:32*ipjk joined #nim
13:03:00FromGitter<couven92> That only works for procs?
13:13:04FromGitter<mratsim> Vote for my feature request
13:13:45FromGitter<mratsim> https://github.com/nim-lang/Nim/issues/6696#issuecomment-341999785
13:29:42couven92Araq, quoteShell is moved, CI tests running green: https://github.com/nim-lang/Nim/pull/6794
13:43:11Araqexcellent work
13:44:22*Guest48862 quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:46:54*dexterk joined #nim
13:50:27*Ven joined #nim
13:50:51*Ven is now known as Guest20721
13:59:28*Serenit0r quit (Ping timeout: 248 seconds)
13:59:59Araqnimble does not support genDepend :-(
14:08:54*dddddd joined #nim
14:16:41*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:22:56*endragor quit (Remote host closed the connection)
14:24:52*Guest20721 quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:25:10*Ven joined #nim
14:25:33*Ven is now known as Guest25826
14:26:53*Guest25826 quit (Client Quit)
14:36:57*endragor joined #nim
14:39:05*Ven joined #nim
14:39:29*Ven is now known as Guest92717
14:41:20*endragor quit (Ping timeout: 258 seconds)
14:50:34*Guest92717 quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:53:20*Ven joined #nim
14:53:44*Ven is now known as Guest9401
14:53:49*claudiuinberlin joined #nim
15:01:10*Guest9401 quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:05:31*floppydh quit (Quit: WeeChat 1.9.1)
15:09:17*Ven_ joined #nim
15:16:36*nsf quit (Quit: WeeChat 1.9.1)
15:18:56*sz0 joined #nim
15:19:03*gangstacat joined #nim
15:29:15*Ven_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:29:36FromGitter<Jipok> https://github.com/nim-lang/Nim/pull/6552 ⏎ "Next release" tag means a 0.18 version? How long does this take? Is there a good replacement for TimeInfo now? The current realistion TimeInfo causes pain.
15:34:56*Ven_ joined #nim
15:38:36AraqJipok: I'll merge this time improvement this weekend, I hope
15:38:49Araq0.18 will be out this year
15:47:21FromGitter<Jipok> Also why Nim doesn't have something like do..while or repeat..until? Not that it was necessary at least once, just interesting.
15:54:32*Ven_ quit (Read error: Connection reset by peer)
15:54:44*Ven joined #nim
15:55:08*Ven is now known as Guest32335
15:56:04*Arrrr joined #nim
15:56:04*Arrrr quit (Changing host)
15:56:04*Arrrr joined #nim
15:56:38dom96Jipok: because they are rarely necessary
15:56:40Araqbecause I found no use for it, 'loop' as an alias for 'while true' would be more useful than repeat until
15:59:40Arrrri have a template like that
16:02:29*yglukhov joined #nim
16:03:24*Guest32335 quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:03:36FromGitter<Jipok> Thank you. By the way, is there a way to link the Nim scripts with the compiled program? For example: use common variables or functions. I do not really like using lua for this.
16:09:12*miran joined #nim
16:20:14*PMunch quit (Quit: Leaving)
16:28:54*xkapastel joined #nim
16:30:25*alex__ quit (Ping timeout: 248 seconds)
16:32:07*dexterk quit (Quit: Konversation terminated!)
16:33:11*JappleAck quit (Quit: Leaving)
16:43:07AraqstaticRead the nimscript?
16:43:12Araqnot sure what you mean
16:49:54*yglukhov quit (Remote host closed the connection)
17:01:47*sendell quit (Remote host closed the connection)
17:06:22*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
17:15:13*SenasOzys quit (Ping timeout: 248 seconds)
17:15:58*SenasOzys joined #nim
17:31:27*yglukhov joined #nim
17:35:27*yglukhov quit (Ping timeout: 240 seconds)
17:45:33*Trustable joined #nim
17:50:12*arecaceae quit (Remote host closed the connection)
17:50:30*arecaceae joined #nim
17:57:29*yglukhov joined #nim
17:58:27*claudiuinberlin joined #nim
17:59:10*cspar joined #nim
17:59:11*yglukhov quit (Client Quit)
17:59:34*yglukhov joined #nim
17:59:38*Jesin joined #nim
18:00:03*alex__ joined #nim
18:04:29*yglukhov quit (Remote host closed the connection)
18:22:57*Sentreen quit (Ping timeout: 240 seconds)
18:25:12ArrrrWould be nice to expose seq capacity for 1.0
18:28:54*couven92 quit (Quit: Client disconnecting)
18:31:41dom96That's not a breaking change, is it?
18:31:49dom96It can be exposed at any point after 1.0 too
18:32:34*Trustable quit (Remote host closed the connection)
18:33:05ArrrrI mean, it would be useful.
18:33:22*yglukhov joined #nim
18:35:59*Sentreen joined #nim
18:38:07*yglukhov quit (Ping timeout: 260 seconds)
18:47:53FromGitter<razuit> how to enumerate files in a directory with nim? looking to merge some files with nim
18:49:41FromGitter<mratsim> Regarding loops, a construct I found useful is Rust “while let” in combo with their option type, especially for stack and queues. ⏎ ⏎ ```while let Some(foo) = bar_seq.pop()``` [https://gitter.im/nim-lang/Nim?at=5a1869c5ffa3e37919b6679c]
18:50:13FromGitter<mratsim> —> It assigns to foo as long as pop() returns something, and if it returns none it stops the loop
18:56:44*couven92 joined #nim
19:03:12*salewski joined #nim
19:04:04salewskiDo we have something like Ruby's flatten() see https://ruby-doc.org/core-2.2.0/Array.html#method-i-flatten
19:07:57*jjido joined #nim
19:09:00*derka joined #nim
19:09:30dom96razuit: os.walkFiles
19:09:59dom96salewski: if it's not in sequtils then probably not
19:11:05dom96Araq: From the changelog: "echo now works with strings that contain \0 (the binary zero is not shown) and nil strings are equal to empty strings."
19:11:10dom96Shouldn't we show something?
19:11:16dom96like a unicode box with a 0 in it?
19:12:47FromGitter<alehander42> @mratsim you can kinda do this with a macro here: I wrote now one for ⏎ ⏎ ```foroption b in a: ⏎ echo b``` ⏎ ⏎ (it's for sequences, but I guess it can be generalized) [https://gitter.im/nim-lang/Nim?at=5a186f2ee606d60e3404f134]
19:13:07FromGitter<alehander42> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5a186f43ba39a53f1ade9c46]
19:13:56salewski[[1,2], [3,4]] ==> [1,2,3,4] # no there seems to be nothing for that in sequtils. But I had the feeling that I saw it somewhere...
19:15:01FromGitter<superfunc> Seems like something that would be good to have in sequtils
19:16:22salewskiBye.
19:16:25*salewski quit (Quit: WeeChat 1.9.1)
19:18:46FromGitter<mratsim> @salewski I have a flat iterator that can iterate over any-depth nested sequences here: https://github.com/mratsim/Arraymancer/blob/master/src/private/nested_containers.nim
19:19:31FromGitter<mratsim> I can PR it to sequtils, I’m not sure of the name to give it though. Any suggestions?
19:21:35FromGitter<Varriount> @mratsim
19:22:00FromGitter<Varriount> Is it possible to "unpack" an arbitrary depth?
19:22:47FromGitter<mratsim> It works on [[[[],[],[] …. ]]]] if that's what you meant.
19:23:25FromGitter<mratsim> Also on mix of sequences of arrays of sequences
19:23:47*endragor joined #nim
19:24:15FromGitter<superfunc> @mratsim That sounds useful, I can do a PR for a flatten function, should it mutate the sequence or produce a new one?
19:24:50FromGitter<mratsim> I’m pretty sure you will get “Illegal capture” if you try to mutate an open array ;)
19:25:19FromGitter<superfunc> could be, I was just prototyping with seqs :)
19:25:36FromGitter<Varriount> And you can't flatten a sequence in place, due to static typing
19:25:59FromGitter<superfunc> oh, derp, holiday brains
19:26:32FromGitter<mratsim> Well if @dom96/@Araq can chime in on the name I can add a `flatItems` iterator and a `flatten` proc that will deep flatten any level of nested proc
19:27:17*salewski joined #nim
19:27:34dom96those names sound good (unless there is some other popular name used by other PLs out there)
19:27:46salewskimratsim, that would be nice.
19:28:03FromGitter<Varriount> Why not `flattenItems`?
19:28:09*endragor quit (Ping timeout: 246 seconds)
19:28:39Araqdom96, well I delegate this to the C IO library
19:28:49Araqwhich ... does nothing with \0
19:29:41*salewski quit (Client Quit)
19:29:57*jjido quit (Read error: No route to host)
19:30:04dom96hrmm ok
19:34:20*derka quit (Quit: derka)
19:35:15*yglukhov joined #nim
19:36:45alexdayhttps://nim-lang.org/docs/tut2.html what is the difference between object of RootObj vs only object type Vector = object vs type Vector = object of RootObj
19:39:57*yglukhov quit (Ping timeout: 260 seconds)
19:43:25*derka joined #nim
19:44:26couven92Is there a way to define my own pragma that can take a value and can be applied to a type declaration, so that I later can see that pragma (with its value) through typedesc/getType*/type()?
19:46:27couven92I can't see how I'd do that! I can't use the pragma-pragma, since that does not allow me any values, and it gets replaced by its pragma definition anyways, so I'd not be able to find it later. I cannot use macro-as-pragma either, since Type declarations cannot have macro-pragmas
19:46:37couven92any ideas?
19:52:37Araqcouven92, that feature is WIP
19:52:43Araqthere is a PR for it
19:55:16*derka quit (Quit: derka)
19:57:27*jsgrant_ joined #nim
19:59:28*jsgrant quit (Ping timeout: 248 seconds)
20:01:55*jsgrant_ quit (Ping timeout: 250 seconds)
20:11:03*MJCaley joined #nim
20:11:24*nsf joined #nim
20:14:41*Trustable joined #nim
20:20:41*derka joined #nim
20:24:54*vlad1777d joined #nim
20:39:33*Arrrr quit (Read error: Connection reset by peer)
20:48:43*xkapastel quit (Quit: Connection closed for inactivity)
20:53:14*yglukhov joined #nim
20:57:35*yglukhov quit (Ping timeout: 240 seconds)
20:58:40*Vladar quit (Quit: Leaving)
21:14:06*jsgrant joined #nim
21:15:54*lastjedi joined #nim
21:19:21*miran quit (Quit: Konversation terminated!)
21:25:43*derka quit (Quit: derka)
21:40:02*bodie_ quit (Ping timeout: 240 seconds)
21:41:20*lastjedi quit (Remote host closed the connection)
21:48:47*xkapastel joined #nim
22:11:59*skrylar joined #nim
22:20:48*jsgrant quit (Ping timeout: 248 seconds)
22:34:57*alex__ quit (Read error: Connection reset by peer)
22:35:13*skrylar quit (Ping timeout: 248 seconds)
22:37:15dom96alexday: an object that can be inherited vs. one that can't
22:37:42*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
22:38:07*skrylar joined #nim
22:51:17*Trustable quit (Remote host closed the connection)
22:59:45*jsgrant joined #nim
23:00:25*MJCaley quit (Quit: MJCaley)
23:08:47*skrylar quit (Ping timeout: 260 seconds)
23:15:05*SenasOzys quit (Ping timeout: 240 seconds)
23:18:48*yglukhov joined #nim
23:23:13*yglukhov quit (Ping timeout: 248 seconds)
23:26:56*MJCaley joined #nim
23:37:15*MJCaley quit (Quit: MJCaley)
23:45:27*jsgrant quit (Ping timeout: 240 seconds)
23:45:43*MJCaley joined #nim
23:49:39*SenasOzys joined #nim
23:50:19*nsf quit (Quit: WeeChat 1.9.1)
23:58:26*MJCaley quit (Quit: MJCaley)