<<09-04-2013>>

00:17:30*q66 quit (Remote host closed the connection)
01:27:28*Mathnerd626 quit (Read error: Connection reset by peer)
10:40:41*Trix[a]r_za is now known as Trixar_za
11:18:35*q66 joined #nimrod
12:35:46*Trixar_za is now known as Trix[a]r_za
12:48:21*Trix[a]r_za is now known as Trixar_za
15:12:36*q66 quit (Remote host closed the connection)
15:12:57*q66 joined #nimrod
16:34:29reactormonkAraq, the longer you wait, the more a BTC is worth... wait.
16:46:35Araqreactormonk: yeah I noticed :-)
16:47:12Araqbtw you wanted to fix that times.nim doesn't compile anymore for the JS target
16:47:14Araqiirc
17:02:49reactormonkpossible
17:38:55dom96hello
17:39:37dom96Araq: How's that blog coming along?
17:39:39reactormonkdom96, mooorning
17:39:40dom96:P
17:39:48dom96reactormonk: 'afternoon!
17:42:18dom96wow, github can now show stl files. Fancy
17:43:11reactormonkthey had some fun
18:26:57apotheonI'm waiting for 1 BTC to be 1M USD.
18:28:51reactormonkapotheon, yup :-)
18:29:01apotheon. . . 'cause 1 BTC is what I have.
18:29:48apotheonI'm also waiting for someone to fix the bitcoin port on FreeBSD. The upstream maintainers of the software are apparently ignoramuses who think the correct way to deal with the fact that nobody on the team has a FreeBSD box handy is to close all bug reports related to FreeBSD, though.
18:31:32reactormonkapotheon, got almost
18:31:37reactormonk... 10 of them. Let's see
18:32:21apotheon2K USD
18:33:03apotheonIt'll only take a 500000% increase in value for you to be a millionaire!
18:33:58apotheonErr, too many of those zero things.
18:34:09apotheon50000%
18:34:14apotheonnot 500000%
19:20:00*gradha joined #nimrod
19:20:43Araqgradha: I've been thinking for a feature for fancyos
19:20:55Araqcouldn't come up with any though :P
19:21:12Araqos.nim is already complete and perfect ;-)
19:22:11gradhaso is genieos, it's nice to write perfect software
19:26:22Araqwhat about a mechanism for "start only 1 instance of this program"?
19:26:25Araqha
19:26:34Araqthere you go, I found a missing feature
19:26:53gradhaisn't that solved through socket opening? I would add a helper to that module
19:27:25Araqyeah but on windows it's more common to use an interprocess mutex
19:28:20gradhamaybe there's also a macosx non portable way of doing that
19:31:39gradhathere you go https://github.com/gradha/genieos/issues/1
19:34:14gradhaI have to make a gh-page for genieos, I wonder if there's any pink theme
19:34:40Araqa joke can be taken too far ... :P
19:37:57gradhamuahaha, time to go through my directory of animated gifs
19:38:10dom96get some pink unicorns in there.
19:39:44gradhacrap, I forgot to link Jessica's baseball epic throw fail, at least I uploaded the link to her hating cucumbers
19:40:21dom96gradha: You know what you should do? Write a nimrod tutorial which includes all the humour from your readmes :D
19:40:41Araqindeed
19:40:59Araqor even better a "nimrod for python programmers" tutorial
19:42:18Araqwow, forum action again
19:42:36dom96yay
19:44:42Araqoh yay
19:44:47Araqand he crashed the compiler
19:45:05Araqnew user, new compiler crash ...
19:45:16*Araq wonders when this will end ...
19:45:26dom96ugh, stop getting depressed.
19:45:29gradhawhen you stop getting new users?
19:45:33dom96He's using something no one uses.
19:45:48Araqyeah but still
19:48:06dom96And you never notice when a new user doesn't crash the compiler...
19:48:20Araqdoes that happen? ;-9
19:48:47dom96i'm sure it does
20:00:54reactormonkAraq, have you seend the new namespace collision? ^^
20:04:57Araqreactormonk: what?
20:05:22Araqthe "I can't name the file 'test' bug?"
20:05:29Araqyes I saw that
20:05:56reactormonkxactly.
20:39:47Araqso ... what's left for 0.9.2?
20:40:11Araq- range checking bug needs to be fixed
20:40:38dom96better async implementation perhaps
20:40:56Araqnot essential for 0.9.2 I think
20:41:06dom96I think it is.
20:41:18dom96It shouldn't take /that/ long.
20:41:33Araqvery well then, go ahead :P
20:41:37dom96lol
20:41:44dom96yeah, maybe it isn't essential :P
20:41:53dom96What about caas?
20:42:18Araqdunno, ask zahary
20:42:54dom96It would be nice to get a release of Aporia which is compatible with a release of Nimrod :P
20:44:40dom96Also it would be nice if you fixed those issues with templates that jester is having
20:47:08Araqyeah but then I may as well change the symbol binding rules for templates
20:47:16Araqand that's left for 0.9.4 on purpose
20:47:43Araqalso this template stuff is always very time consuming
20:50:15dom96what about other issues on github?
20:51:05dom96I think it's quite important that the mac issue is fixed.
20:51:55AraqI can't fix it
20:52:06Araqzahary, please fix it ;-)
20:52:51dom96what about package management?
20:53:16dom96btw I feel like our news is missing quite a lot of things :P
20:53:17Araqnot for 0.9.2
20:53:39*dom96 wonders if you will just tell him "not for 0.9.2" to anything he suggests
20:53:56Araqwell 0.9.2 is overdue since forever
20:54:42dom96ok, any other serious bugs you're aware of?
20:55:09dom96perhaps we should have a small 'freeze' period to make sure there aren't any silly bugs.
20:56:13Araqthis shouldn't be necessary
20:58:48dom96hrm
21:05:01dom96what about implicit returns?
21:05:16*gradha quit (Quit: bbl, have youtube videos to watch)
21:05:31Araqthat's no bug
21:05:42Araqthat's the supposed behaviour
21:06:07Araqno implicit ': auto' return type, sorry
21:06:10dom96no, i mean.
21:06:28dom96What about this functional style where you don't need to write 'return'
21:06:37Araqwhat about it?
21:06:59Araqit's a bit weird right now, I agree
21:07:04dom96yeah
21:07:13dom96How does it work currently?
21:07:13Araqbut then this feature really conflicts with 'discardable'
21:07:18dom96Is the behaviour documented?
21:07:25Araqhrm good point
21:07:32dom96how will it work?
21:07:43AraqI don't know
21:07:56Araqproc p(): int = 12 # works today
21:08:00Araqproc p(): int =
21:08:05Araq 12 # does not
21:08:28dom96yes, it sucks IMO :P
21:08:43Araqyeah I will allow the second one too
21:09:01Araqbut apart from that not much else, I think
21:09:09dom96I think we should talk about how it should work.
21:09:17dom96Perhaps we can come up with some nice scheme.
21:09:18Araqwell we are
21:09:28Araqthe problem is:
21:09:34Araqproc p(): int =
21:09:48dom96perhaps we should state what we want first :P
21:09:49Araq q() # should discard its return value
21:09:57dom96but go ahead
21:10:31Araqit happens quite often that you do want to discard the value
21:10:46Araqwell the better example is:
21:10:49Araqproc p(): int =
21:10:53Araq result = 23
21:11:14Araq q() # some C stuff that returns an int as error code that you want to ignore
21:11:37Araqyou want to return the 23 though, not q's result
21:12:12Araqso it's pretty confusing stuff with the 'result' design
21:13:22dom96It should be an error then
21:13:42dom96but then it's kinda meh
21:14:01dom96I can see how this would cause confusion.
21:14:09Araqno it should implicitly discard q as q has been declared as such
21:14:42Araqyeah, perhaps I shouldn't have introduced 'result' in the first place, but now it's too late and it's quite handy anyway
21:14:49dom96I'm sure other languages which employ this suffer from similar problems.
21:15:00dom96IIRC rust solves this by using the semicolon
21:15:06Araqyeah
21:15:10Araqrust's solution sucks too
21:15:22dom96why so?
21:15:22Araqso actually the current solution is not bad
21:15:34Araqit simply needs to allow for a few more special cases
21:15:46Araqbecause semicolons suck to begin with
21:16:07Araqand now it affects semantics
21:17:44dom96perhaps, but it's a simple rule
21:18:02Araqwell you can always do:
21:18:15dom96It seems that the only solutions we can come up with will be very complex.
21:18:25Araqtemplate `^`(x: expr): stmt {.immediate.} = return x
21:18:40Araqand then you have smalltalk's aweseomeness in nimrod
21:18:52Araqwhere ^q means 'return q'
21:19:15Araqand no, my solution is not complex at all
21:19:29dom96Describe your solution then.
21:19:50Araq"if the body is a single statement (ignoring comment statements), its result is forwarded"
21:20:59Araq"to make the whole body an expression, wrap it in ()" <-- that's an optional rule we could introduce
21:21:04Araqthe ()-rule is for
21:21:09Araqproc p(): int =
21:21:16Araq (if ...) # now an expression
21:21:41dom96ugh, that's ugly.
21:21:41Araqas opposed to an if statement which may lack an 'else' ;-)
21:21:49Araqis it?
21:21:50dom96That's like using {} but ()
21:22:07Araqbut it's rarely necessary
21:22:13Araqso it's not like using {}
21:23:19Araqand the ()-rule exists already I think
21:23:56dom96yes, I dislike it.
21:24:08*XAMPP_ joined #nimrod
21:24:11dom96:P
21:24:13Araqwell come up with a better solution then
21:24:24AraqI think it's cool
21:24:42Araqbut yeah, seems like the expr/stmt distinction will stay a while :P
21:25:15Araqbut ugh
21:25:26Araq'if' can be disambiguated differently
21:25:35Araqso hrm
21:25:47Araqmaybe the ()-rule ain't necessary
21:26:02dom96How much work is it to get rid of the expr/stmt distinction?
21:26:31AraqI don't know
21:26:58Araqwell for the:
21:27:03Araqproc p(): int =
21:27:06Araq result = 1
21:27:07Araq q()
21:27:18Araqcase, it's necessary
21:27:51Araqbut never mind, I have a solution for that too
21:28:14dom96The rules list only increases...
21:29:14Araqnot really
21:29:23Araqbut I'm not sure my new rule is better:
21:29:59Araq"if the list of statements contains an assignment statement, its type shall be 'void'"
21:30:18Araq"otherwise it's the type of the last statement of the list"
21:31:07Araqthat's the real problem description btw; "which expressions yield 'void'?"
21:31:37dom96wait what
21:32:05dom96I'm not sure I follow. Did you just describe what should happen if you have a proc with a return type of ': auto"
21:32:07dom96?
21:32:15Araqno
21:32:21Araq'auto' has nothing to do with it
21:33:21Araqbut under the premise there is no syntactic distinction between expr/stmt we need a rule which expressions are of type 'void'
21:33:34*XAMPP quit (*.net *.split)
21:34:25Araqand 'result = 34; q()' should have type 'void'
21:34:29dom96so one expression could refer to a number of "statements"
21:35:05Araqwell yeah, it could be a list of "statements"
21:35:17Araqalso sometimes written as: (;;)
21:35:26Araqor rather (e1; e2)
21:36:28Araqso ... the type of (e1; e2) is the type of e2
21:36:32dom96making that expression void seems incorrect
21:36:33Araqbut not always :P
21:37:18Araqmaking it void is not incorrect, it's how it has to be done for our sanity
21:37:32dom96ok.
21:37:55dom96but: 'var foo = 13; q()' is not 'void'?
21:38:14Araqthat's void too
21:38:28Araqor maybe it isn't, I don't know
21:38:42Araqan 'if' without an 'else' is void for sure
21:38:43dom96I was thinking that it's only void if you assign to the 'result' var
21:38:59dom96what about:
21:39:09dom96if q: blah
21:39:13dom96foo()
21:39:15Araqbut that makes 'result' rather special
21:39:36dom96hrm
21:39:36Araqso the rule should be weaker
21:39:45dom96well foo will always be called anyway
21:39:59dom96so it should not be 'void'
21:40:21Araq(if q: blah; foo()) may have foo's return type
21:40:54Araqbut it's getting quite too arbitrary here
21:41:14Araqreally hard to design this right
21:41:32dom96I think it's fairly straightforward.
21:41:51Araqalright
21:41:52dom96Look at last expression in a proc.
21:42:09dom96If result is not assigned to, the last expression is the type.
21:42:40dom96(also in the case of 'if' and 'case' expressions, the type of each branch must be the same, otherwise compile time error)
21:42:48Araq(yeah of course)
21:43:13Araqso (if q: blah; foo()) has foo's type?
21:43:20Araq*foo's return type
21:43:21dom96yes
21:43:41Araqand only assignment to 'result' is special?
21:43:47dom96indeed
21:44:08Araqbut what if:
21:44:16Araqproc p() =
21:44:18Araq q()
21:44:36Araqand q yields a non-void type and is implicitly discardable?
21:45:01dom96'yields'?
21:45:06dom96As in, it's an iterator?
21:45:12Araqno
21:45:15dom96ok lol
21:45:19Araqan expression yields a type
21:45:33Araqhas nothing to do with iterators in this context
21:46:27dom96hrm
21:46:32Araqwell 'discardable' causes some troubles too
21:46:49Araqit's then a "do what I mean" type ...
21:47:45dom96I'm assuming p has a return type btw?
21:47:54Araqno it has none
21:48:03Araqthat's the point of the example
21:48:18dom96well then it's pretty obvious no?
21:48:41dom96The real problem is when p does have a return type.
21:48:51dom96And the return type of p matches that of q
21:49:03Araqyeah that's a problem too
21:50:51dom96Well, I don't see the problem with your example.
21:50:58dom96Where is the ambiguity?
21:51:31Araqit's not ambiguous but it's another "do what i mean" special case for the compiler
21:51:42dom96how so?
21:51:53Araqwhere it has to discard it because later it figures out p has no return type
21:52:37AraqI think the rule should be 'discardable means void unless assigned to something'
21:52:55dom96I still don't understand
21:53:04Araqmeh
21:53:11Araqit's not that important
21:53:15dom96Is the problem that the compiler doesn't know that the return type of p is void?
21:53:44dom96well at least at that point.
21:53:53Araqyes.
21:54:18dom96Well, I thought we were just talking about rules.
21:54:29dom96Don't mix implementation problems in here.
21:54:34Araqlol
21:54:55Araqyeah it's not like somebody has to implement the rules you dream up here
21:56:02dom96Well up until now I've been dreaming up features and they were implemented like magic. :D
21:58:02dom96anyway
21:58:18dom96Start a thread on the forum maybe, or github issues.
22:00:47Araqthat sends the wrong sign though
22:00:54dom96how so?
22:01:11dom96including the community in design decisions is valued by many.
22:01:26AraqNimrod is not that language that's discussed
22:01:49AraqNimrod is the language where simply the right thing comes out of magic
22:02:50dom96Why are we discussing it then? :P
22:03:03dom96Do you want to just make all decisions on your own?
22:03:44dom96Most likely you will make the right decision, but more likely you will have some people complaining and might have to waste more time changing things...
22:07:24Araqyeah, I'm kidding
22:07:42dom96good :P
22:07:45Araqnow somebody need to write that forum post ...
22:08:06dom96not it
22:08:13dom96In fact
22:08:22dom96What you need to do is write that blog post of yours
22:10:27Araqhrm ok
22:24:39NimBotnimrod-code/Aporia e6c07c9 Dominik Picheta [+0 ±2 -0]: Fixes #33
22:28:27*q66 quit (Remote host closed the connection)
22:42:10dom96good night
23:15:36*fowl joined #nimrod
23:40:58*Mathnerd626 joined #nimrod