<<23-02-2013>>

00:06:12filwitAraq: if you have a moment, check out my language goals: https://gist.github.com/PhilipWitte/5017538
00:06:25filwitAraq: i would like to know your input on my design ideas
00:06:37filwitAraq: you know a lot, and I value your opinion
00:07:15filwitAraq: one of the ideas, is that there's only one, simple way to do things.. even templates and type deduction
00:07:35filwitAraq: meaning, there's no special or extra syntax required
00:08:42filwitAraq: eg, no need for 'proc foo[S, T](s: S, t: t)" just "proc foo(s, t)" for generic types, or "proc foo(s:int, t:text)" for specialization
00:09:54filwitAraq: anyways, if you have any comments or criticisms, i would like to know. If you're busy or don't care to take a look, i understand that as well.
00:10:09Araqsorry, I'm reading it now
00:10:28filwitAraq: i really just wanted to show you some of my thoughts on "the perfect language", to let you know where I'm coming from when we argue about this kind of thing
00:10:46Araqfor a start get rid of 'uint' for age please
00:11:06Araqunsigned arithmetic is almost always absurd
00:11:26Araqyou want some 'nat' instead or even '0..150'
00:11:59filwityes, the 'uint' is debatable, and I've looked a Nimrod a lot as an influence here
00:12:34filwiti like the idea of "limited types" that is, 'int' - integer, 'dec' - decimal, 'num' - int or dec
00:13:03filwitso: func foo(i:int, n:num) can be used like: foo(0, 1) or foo(0, 0.2)
00:13:25filwitso 'uint' would just be a "limited" version of an 'int'
00:13:32Araqah ok
00:14:01Araqhow do you do this:
00:14:17Araqproc p[T](s: seq[T], x: T)
00:14:46filwitgood question, idk
00:14:48Araqnote that you can't have that type constraint in your syntax
00:15:06Araqyou can do it ML-like though:
00:15:26*q66 quit (Remote host closed the connection)
00:15:26Araqfunc p(s: seq['a], x: 'a)
00:15:31filwitthe syntax there is debatable, but i would imagine something like: func p(s:*[], x:type(s))
00:16:03Araqbut it's not type(s), it is basetype(s)
00:16:08Araqor something like that
00:16:19filwityes, your ideas are good
00:16:32AraqML does that better
00:16:39filwitML?
00:16:51filwitmeta-language?
00:17:00filwitmeta-list?
00:17:29Araqanything that starts with a ' is an implicitly declared type variable
00:17:46Araqso you don't have those annoying []
00:17:53filwitthe main point, it to try and eliminate the special syntax as much as possible, and make general generic programming "feel" like dynamic programming
00:18:36filwitAraq: well, in my design, a "dynamic array" (sequence) is decared like: var i : int[]
00:18:54Araqbut thats a special syntax :P
00:19:15filwityes, actually i'm glad you brought that up
00:19:21filwiti was thinking about this
00:19:29filwitsee, you have to have syntax like this:
00:19:37filwitsomevar = x[2]
00:19:58filwitarray syntax, but... you have all kinds of different containers
00:20:09filwitList, DynamicList, LinkedList, etc
00:20:24filwitso my idea, was to have something like a "list type"
00:20:28filwitvar x = int[]
00:20:33filwitvar x = int[4]
00:20:38AraqIEnumerable? ;-)
00:20:40filwitvar x = int[Linked]
00:21:03filwitwhere 'Linked' is a user (stdlib) defined 'iteration' type
00:21:30filwitand presents a LinkedList access to a standard '[]' syntax
00:21:35filwiti'm not sure it would work though
00:21:54filwitsorry, what exactly do you mean by: IEnumerable ?
00:22:08Araqnah, forget it
00:22:16filwitoh, okay
00:22:22AraqI thought you were about to re-invent it :P
00:22:28filwitoh, i see
00:22:51filwitalso, something to note
00:23:06filwit'func's can be "global", but only seen by their internal modules
00:23:22filwitand you don't have to "import" anything
00:23:35Araqyeah I dislike that
00:23:36filwityou just use the type, based on it's name
00:23:44filwitwhy, exactly?
00:24:01Araqit makes much harder to figure out a module's dependencies
00:24:08filwitand do you mean you dislike no-global-funcs? or no-imports?
00:24:20AraqI dislike the no-imports
00:24:35Araqit encourages that everything simply imports everything
00:24:49Araqaka circular dependencies
00:25:06filwitthat would be easily fixed with compiler options
00:25:06AraqC# code is full of them as OO actually encourages it
00:25:16filwit(to find dependencies that is)
00:25:54filwitand, since you're "compiling" all the files anyways, and there's no need for forward declaration, i don't see why it would be a problem
00:26:17filwitreally, i wanted "type" to be the core way you access stuff
00:26:31*fowl quit (Read error: Connection reset by peer)
00:26:31filwitso if you see "Console.write" you know to look for the "Console" type
00:27:01*fowl joined #nimrod
00:27:06filwitbut you don't have to embed that into a module, which some arbitrary name, and then remember which module the type "console" was in
00:27:09filwitjust to use it
00:27:18filwitall you have to remember is 1 name in my system
00:27:36filwitinstead of 2 as in.. every other language
00:28:20filwitanyways, thanks for your input
00:28:26filwiti appriciate you taking the time
00:28:36filwitappreciate
00:29:13filwiti'm glad you did though, so if we ever argue about something, you have a better idea of where I'm coming from.
00:29:29*fowl quit (Read error: Connection reset by peer)
00:29:34Araqfunc += (n) { x, y, z, w += n } # what does this do?
00:29:43AraqI mean the x, y, z
00:30:02filwitit's sugar for: x += n; y += n; etc...
00:30:02*fowl joined #nimrod
00:30:22filwitthat part is debatable
00:30:26Araqah I see
00:30:36Araqwhen you do it, it's "sugar" :P
00:30:36filwitbut i have a lot of "sugar" ideas on how to simplify things
00:31:00filwityes, lol
00:31:07filwitmine is restricted
00:31:09Araqwhen I do it, it's a hard to learn inconsistency :P
00:31:25filwitand it's logical, for instance you can do this: (andrew, philip).greet()
00:32:27filwitAraq: the problem is you don't define any rules at all on Nimrods expressivness (except in that you can't express OOP :P)
00:33:00filwitand so it's hard to remember where something came from, or what's available to specific types
00:33:14filwitthe problem is complicated by forced UFCS
00:33:22Araq1. you can express OOP easily in Nimrod
00:33:29AraqI told you multiple times
00:34:01filwiti've asked about that... var = Type.x # 'x' is global
00:34:17Araq2. there are rules about the expressiveness
00:34:35filwityou'd have to make this: proc x(t:TypeDesc[Type]) = global_x
00:34:48Araqso?
00:34:57Araqthat's "Not supporting OO" now?
00:34:59filwityou are now managing "global_x"
00:35:21filwitand just making a special wrapper, which each person who wants to code like that, needs to make
00:35:49filwitalso, i didn't mean to say Nimrod has "no" rules to it's expressiveness
00:35:51filwitsorry
00:36:04filwitlike I've said before, Nimrod, IMO, gets many many things right
00:36:12filwitespecially compared to other languages
00:36:36Araq# funcs are found in declaration order
00:36:38Araq# so you can have multiple overload with the same type
00:36:40Araq# the first one will be tried first, but if it doesn't work
00:36:42Araq# then the compler move on to the next and tries that, until
00:36:43Araq# it matches one, or fails completely and throws a compiler error
00:36:45Araqthat's awful
00:36:54filwit:)
00:37:11filwithow so exactly?
00:37:22Araqso forward declarations are bad and yet you use the order in overloading resolution? o.O
00:37:36filwitit's not the same problem at all
00:37:56filwitforward declaration is only bad because the compiler can't see something that the programmer obviously can
00:38:06filwitit's annoying to have to hold it's hand through it
00:38:34filwitmy function resolution is about putting preferences on functions that have the same parameters
00:39:56filwitfuncs can be overloaded with the same parameter, but you prefer them by declaring them above the others.
00:40:29Araqclay does something similar iirc
00:40:39Araqthey want to remove the feature :P
00:40:40filwiti did not know that
00:41:17filwityes, i understand it's might be confusing, but I also do the same thing with module resolution
00:41:34Araqin nimrod you can'
00:41:39Araqcan't
00:42:02filwitcan't what?
00:42:41Araqplay with the order of module imports to change overloading resolution
00:43:15filwitwell... the only reason it applies to mine, is because i don't have "imports"
00:43:29filwityou just use "types" which can be in any file
00:44:04Araqthat's a maintainance nightmare ;-)
00:44:26filwithow so?
00:44:40filwitcan you present a problem where it will get really out of hand?
00:45:18Araqyou have no module system
00:45:18filwiti have thought about it, and i think there are easy solutions to everything
00:45:35Araqwhat you have here is an ever growing mess
00:45:47Araqwhere everything freely uses everything else
00:45:57filwithmm, no more than C# or C++ where namespaces don't match files
00:46:02Araqand all you can do is whole program compilation
00:46:22filwitahh, yes but i didn't tell you about 'isolation'
00:46:33Araqand yes
00:46:34filwitbut still, normally that's not needed
00:46:43Araqit's a problem in C# and C++ too IMO
00:46:52filwityour Standard Lib shouldn't have conflicting names to begin with
00:47:18filwitactually, see i used to agree with you there (about namespaces vs modules)
00:47:29filwitbut my brother convinced me
00:48:07filwityou can't tie code to specific files, because it becomes really hard to refactor your code
00:48:22Araqwait a sec ...
00:48:36Araqyou design the language to require an IDE
00:48:52filwitno
00:48:54Araqand yet some things make refactoring hard?
00:48:57filwitbut it would be ideal
00:49:14filwitgood point
00:49:42filwitstill, i don't see how that's a point in module's favor, since if you have an IDE, finding the type wont be hard either
00:50:37filwitthe benefit of not having to import something, is that you don't have to remember the double category
00:50:50filwityou can just right-click "go to definition"
00:50:53Araqwell I tried hard to make the language IDE agnostic
00:51:11filwityes, like i said, my design doesn't require an idea
00:51:21filwitbut you do need to know what files are being compiled
00:51:21Araqyes it does IMO
00:51:55filwitthe devs have to be aware of what types are available, true, and that would be best illustrated through an IDE
00:52:09filwitbut you could acheive the same thing with terminal commands
00:52:12filwitor a project file
00:52:33filwitplus, IDE's these days are kinda a must-have for big projects
00:53:00filwitso relying on one that is designed to fit isn't a big deal, so long as it's open-source/cross-platform
00:53:46filwitanyways... no other complaints?
00:53:57filwitis there anything you like about the design at all?
00:54:43filwitI use curly-braces syntax because it's why i prefer best, but mostly I have not much of a preference there
00:55:02filwiti don't really like how Nimrod requires spaces, cause it's hard to work with in GEdit
00:55:21Araqit's not
00:55:25filwitbut that's not a problem with other text-editors/IDEs
00:55:34AraqI used gedit for it
00:55:41Araqbefore aporia was ready
00:55:45filwityes, but you use double-spaces
00:55:52filwitso two spaces isn't hard to hit
00:55:59filwitjust takes getting used too
00:56:05filwitbut i like 4-spaces
00:56:10Araqo.o
00:56:13filwiteasier to read, IMO
00:56:19AraqI press tab to indent
00:56:32filwityes, but then deleting the tab?
00:56:44Araqshift+tab
00:56:51Araqto dedent
00:57:08filwiti meant a single tab
00:57:16filwiti was actually making that in Aporia
00:57:29filwitwhere it would delete the "tab size" number of blank spaces
00:57:38filwitif you just hit delete
00:57:59filwitso it felt like a regular tab system
00:58:18Araqah that's what you mean
00:59:35AraqI don't mind your design too much
00:59:46Araqbut I also find it boring ;-)
00:59:54filwitgreat!
01:00:02filwiti read that as "consistent"
01:00:09filwitmeaning, "good for noobs"
01:00:18filwitmeaning, "good for game-scripts"
01:00:26filwitwhich is the other design...
01:00:36*fowl quit (Ping timeout: 248 seconds)
01:01:03filwitit's designed to be interpreted, so it would be very useful for a game-engine doing real-time adjustments to code
01:01:16filwitanyways, again, thanks for the input
01:01:26Araqnoobs shouldn't program ;-)
01:01:40filwitit's not just about noobs
01:01:50filwitit's about other understand peoples code faster
01:02:29filwitif there's less, consistent rules the language has, and things are organized right (OOP imo), then you can read others code and learn it faster
01:02:42filwitthat's one thing that I liked about Nimrod
01:02:50filwitis that it had very simple rules, off the bat
01:03:01filwityou basically only see function calls
01:03:17filwitand you use them, mostly the same way, even if they're a template/macro
01:03:38filwitvs D/C++ where you have all this extra template syntax
01:05:03filwitmy main gripe with Nimrod is that it's not OOP, and you have to go out of your way to make it work like that
01:05:13filwitand i really don't like "floating functions" these days
01:05:45filwitbut anyways, we've talked about all that before
01:05:58Araqindeed
01:09:16Araqwhy are floating types better?
01:09:21Araqargh, no
01:09:29AraqI don't want to hear it again :P
01:09:34filwithahaha
01:10:21Araqhow do you declare a virtual func in your language?
01:10:35filwiti have mixed ideas on that
01:11:07filwiteither the compiler determins it needs them to be virtual (like D), or you use: 'proc'
01:11:13filwitdetermines*
01:11:35filwitmy idea is to use a lot of static analysis when i can
01:11:46filwitfor instance, there would only be one 'type'
01:11:52filwit(no struct/class)
01:12:34filwitand the compiler says... "this type isn't derived, and isn't exported, so it can be [like a struct]"
01:13:08filwitan easy way to enforce that a type is a struct though, is like: type Vector : final
01:14:09filwitand then you just have documentation for semi-advanced programmers that explain why it's good practice to "lock-up" types (so other programmers cant change them, causing unoptimizations to happen)
01:14:35filwitalso, it would ideally be instance specific (like Java)
01:15:16filwitwhere, even if the type had a hierarchy to it, if the compiler could determine that wasn't being used, it wouldn't need to include the memory padding, vtables, etc
01:15:40*fowl joined #nimrod
01:16:34*Anaphaxeton quit (Remote host closed the connection)
01:18:33filwitps. my language isn't boring in the sense that it would have a completely unique memory model (var/ref/ptr system i told you about) and it doesn't use "classical" constructor syntax
01:19:48Araqwhy do you care about devirtualization in an interpreted language?
01:20:02filwitit's not interpreted
01:20:13Araqyou said it would be
01:20:16filwitit would be as optimized a LLVM could get it to be
01:20:19filwitit would be both
01:20:41filwitthe compiler is designed to say open, and accept modifications commands to the semantics
01:20:48filwitso you can make changes on the fly
01:20:52filwitand then just run it
01:21:08filwitbut you can build it too, all the way to native (or to IL for JIT if you want)
01:21:39filwiteffeciency is my primary concern at the end of the day
01:21:48filwitefficiency*
01:23:32filwitright now, I have a interpreter (no parser yet), which can run int math
01:23:36filwitthat's all
01:25:00fowlfilwit: did you try proc foo(s, t) = echo(s, t) in nimrod
01:25:25filwitfowl: yes Araq told me that was added in!
01:25:27filwitvery cool
01:25:51filwitwhen i was first around, that wasn't made yet, and I was excited Araq was thinking about adding it in
01:26:20Araqfilwit: you should also check out the new first class iterators
01:26:55filwitlink?
01:27:16filwiti'll find it
01:27:17filwitone sec
01:27:22fowlAraq: how long until i can do var fib = iterator{.closure} = ...
01:27:48Araqfowl: do you already need it? :-)
01:28:59fowlno but being able to do that and return iterators could be useful, i was thinking about using it in a dsl for game state handling
01:29:59Araqyou can return them already
01:30:08Araqit's just that anon iterators don't exist
01:30:21Araqand yeah I had game state handling in mind for them too
01:31:20filwitso what is this first-class iterators?
01:31:26filwiti can't find it in the docs
01:31:35filwiti always new iterators in Nimrod where cool
01:31:44filwitbut did something change with them?
01:31:51fowlfilwit: http://build.nimrod-code.org/docs/manual.html#closure-iterator_362287364
01:32:22Araqyou can do the usual IEnumerable stuff with them now
01:32:39Araqand you can use them for async IO
01:32:46fowlcool
01:32:54filwitahh, interesting
01:32:57Araqonce the stdlib is patched to support it
01:34:36fowli did an sdl skeleton with it https://gist.github.com/fowlmouth/4970500
01:34:46fowliterators*
01:38:31Araqfilwit: you need a syntax that says if the 'this' object is passed by var/ref/ptr
01:39:23filwitfunc foo(x:ref int)
01:39:30filwitdefaults to var
01:39:36dom96hrm, the sockets gods are not cooperating with me tonight
01:39:41filwitwhich doesn't equate to "value"
01:39:54filwitit just means it can't be modified or set to null
01:40:20filwitwell.. vars can be modified, just no params (by default)
01:40:35filwitobviously...
01:41:13fowlwhat wrong with null ref/ptr?
01:41:42filwiti have three types.. var, ref, & ptr
01:41:46filwitvar can't be null
01:42:17fowlwhat if its a var ptr
01:42:23filwit(technically you can force it to be, in unsafe code or with ptrs)
01:42:40filwita 'var ptr' doesn't make any sense in my language
01:42:49filwityou declare things like this:
01:42:55filwitdef x = 10 # constant
01:43:01filwitvar x = 10 # owner
01:43:20filwitref x : int # non-owner
01:43:31filwitptr x = 10 # unsafe pointer
01:44:25fowlwhats the use of declaring things as a pointer to a raw memory address
01:44:55filwitthey aren't managed
01:45:11filwitthere's no bookkeeping going on at all
01:45:16filwitptr can point to valid memory
01:45:29fowlis that to a private stack or something
01:45:33fowlheap
01:45:51filwitmy memory modal, as I've explained to Araq, is unique
01:46:05filwitit doesn't use a GC, but is "safe"
01:46:06fowli only see that being useful if you have a full vm for it
01:46:16filwitno VM or GC
01:46:26filwityou have a heap and a stack
01:47:04filwitand vars are allocated at definition. refs are always weak
01:47:17filwitvars get cleaned up at the end of their scope
01:47:34filwitor when theyre containing type gets deleted
01:47:42filwitrefs are set to null at that point
01:47:54filwit(the refs that where pointing to them)
01:48:30filwitso it's a type of "GC"... just not a usually kind
01:48:38filwitcause there are different restrictions
01:49:04filwithttps://gist.github.com/PhilipWitte/4962210
01:49:28filwit(there is more too it than that, but that's the general idea)
01:50:01Araqwell good night everyone
01:50:08filwitnight!
01:50:24fowli find the difference in `ref x : type` and `var x = type` unsettling >_>
01:50:49filwit:) you get used to it pretty quick
01:50:58filwitand honestly, i really like it afterwards
01:51:13filwityou can clearly see what the intent of a variable is
01:51:17fowlthe syntax reminds me of c++tranny
01:51:28filwitnever heard of it...
01:51:30fowlhttps://github.com/fowlmouth/cpptranny
01:52:01filwitgross.. my syntax does not look like that
01:52:14filwit:P
01:52:33filwithere's more examples of my design: https://gist.github.com/PhilipWitte/5017538
01:52:53fowlthe type decls, func decls, var decls do, for the most part
01:53:05filwitwait... i think i'm reading that wrong
01:53:06fowlif you were trying to wrap c++ 1:1 thats what your language would look like :p
01:53:23filwiti was reading their normal C++ examples
01:53:37filwityes, that's interesting
01:54:03filwitstill... there is more to my language than just the memory model, but yeah, thanks for the heads up on that
01:54:16filwiti always knew i wasn't the first to think of the memory model
01:54:29filwiti just never knew of anything else that made use of it
01:54:36filwitmaybe C++tranny does
01:54:48fowlno, c++tranny is an alternate syntax for c++, nothing more
01:56:10fowlits the same information you need in C++ code, with readability
01:56:20filwiti see
01:56:33filwityeah, i don't like how complicated it looks
01:56:58filwitbasically just C++ with, but with a Javascript twist
01:57:05filwitor... something like that
01:57:26fowlid say it looks more like actionscript than anything else
01:57:32filwittrue
01:59:54dom96good night
02:00:04filwitnight, dom96!
02:00:09fowlnight
02:00:16filwiti'm taking off too
02:00:20filwitbye, fowl
02:00:24fowlcya
02:00:36*filwit quit (Quit: Leaving)
07:28:32*gour joined #nimrod
08:02:57*FreeArtMan joined #nimrod
09:08:33*gour quit (Disconnected by services)
09:08:33*gour_ joined #nimrod
09:10:57*Anaphaxeton joined #nimrod
09:25:40*fowl quit (Ping timeout: 248 seconds)
11:07:09*gour_ is now known as gour
11:08:12gourAraq: what do you thin kabout EFL? btw, i see you rm-ed 'install' for Claro, so it's not possible to build examples
11:26:21*fowl joined #nimrod
11:30:42Araqgour: "install" has never been implemented
11:31:01Araqso I removed the line that says it can be done
11:32:09fowlAraq: can json's existkey be renamed or inlined to `haskey`
11:32:25fowlexistskey*
11:32:54fowlhaskey is used for ttable[]
11:33:07Araqfowl: do it, deprecate "existsKey" and make a pull request
11:33:34fowlcool ty
11:34:29dom96Make sure to write "**Deprecated since version 0.9.2**: reason" in the docs for 'existsKey'.
11:34:43gourAraq: ok
11:35:03gourwhat do you think about https://sourceforge.net/create/ as place for Nimrod?
11:35:30NimBotnimrod-code/Aporia 02796b4 Dominik Picheta [+0 ±4 -0]: Compile & Run using paths with a space now works properly.... 2 more lines
11:35:38dom96My first thought is "bleh".
11:36:12goure.g. "We start with a wiki, but you can install and use any tools that you want in your project web space."
11:36:38gourAraq: so, install has to be done by hand in order to build examples?
11:40:32gourhere is reddit post - http://www.reddit.com/r/programming/comments/191vib/the_next_sourceforge/
11:41:56Araqgour: yes
11:42:15Araqit amounts to "sudo cp libclaro.so /urs/lib"
11:42:23Araqor something like that
11:42:30Araqbut we'll change it anyway
11:42:39Araqand embed it in the claro.nim
11:43:00fowl<- hates sourceforge
11:43:11fowli find it hard to navigate
11:43:12Araqso sourceforge tries to compete with github finally
11:43:24dom96Most people do hate it.
11:43:36Araqunfortunately it's still hard to navigate and browsing some repo is awefully slow
11:43:36gour"old one" :-)
11:43:55gourgithub is also not special, just sucks less, maybe
11:44:30gourthey rm-ed download :-(
11:44:36dom96what advantage would moving to sourceforge bring us?
11:44:40Araq"The killer feature of SourceForge is that for every user they create an Unix account and you can login via ssh." ... hm
11:47:34dom96and do what exactly?
11:47:51fowldom96: want to port sfml to nimrod with me? (=
11:48:36dom96not sure I have the time.
11:49:04Araqgour: I have no opinion on EFL
11:49:15fowloh:<
11:49:16Araqbut since it's linux specific it's not very interesting
11:49:27dom96fowl: I can help a little bit once in a while maybe.
11:49:38dom96fowl: why do you want to port sfml to nimrod?
11:50:28fowli like the api and its really easy to use and encourages imperative design
11:51:01dom96ok, but why port it to Nimrod? why not just use the wrapper?
11:52:06fowlthere is overhead in converting from c++ to c
11:52:36fowland requiring ppl to have not just sfml but csfml installed is annoying
11:59:23fowlhere's what i have so far https://gist.github.com/fowlmouth/5019522
11:59:25*q66 joined #nimrod
12:04:08*Anaphaxet0n joined #nimrod
12:04:23*Anaphaxeton quit (Ping timeout: 255 seconds)
12:04:41Araqfowl: looks nice but you don't to copy the "ClassImpl" bullshit of C++
12:07:16fowlAraq: i just wanted to keep the implementation code separated for each platform
12:07:39Araqoh alright
12:07:45fowli dont ever want to have to look at window_win.nim (whenever someone interested does it, because fck the win api)
12:08:21AraqI never bother, I'd use a 'when' in the object ;-)
12:13:08Araqit's often only a "when defined(windows): winHandle: THandle" anyway
12:15:21fowli dont want platform specific stuff in the main file if possible
12:15:51fowlplus TWindow will likely hold more data like an event queue
12:16:51Araqyour way is fine too
13:42:36gourAraq: i believe EFL is supposed to run on mobile devices as well, although i'm not very interested for it...otoh, looking at some claro examples, it looks as one could call claro as something line wxlight
13:52:39fowli want an ubuntu phone
13:52:58dom96i want google glass
13:53:12Araqhm no iOS crap and no Java/Andriod crap?
13:53:28Araqindeed ... could be an idea
13:53:35fowlim not ready for glass yet
13:53:47Araqbut I thought ubuntu phone only runs a firefox?
13:53:49fowli'll get one when its required by the government
13:54:08dom96Araq: You're thinking of MozillaOS or whatever it's called
13:54:19Araqdom96: yeah ...
13:54:41fowlubuntu phone uses QML (some web-like stuff?) or c api
13:54:44fowlafaik
14:00:47dom96I bet ubuntu phones will be quite expensive, judging from the OS' system requirements.
14:09:24gour"Reply to forum posts by email" is nice feature on new SF
14:45:48dom96I can't get timeouts to work with httpclient and ssl for some reason :\
14:57:06Araqso ... gour ... do the claro examples work for ya?
15:03:01fowlcheck out this beautiful gui http://sfgui.sfml-dev.de/p/
15:04:05dom96Reminds me of Counter Strike's GUI
15:04:16gourAraq: nope...i had problems with includes and then got some linker error...
15:04:22Araqit's ugly
15:04:28dom96"Load properties from CSS-like themes during runtime."
15:04:49fowl^
15:05:03fowli had some prototype loading of gui elements from json but it sucks
15:05:13fowlim gonna rewrite it
15:05:22fowlone day, LOL
15:05:39dom96A Nimrod DSL for creating quick GUIs would be nice
15:07:52gourported Claro to Nimrod looks as best long-term option for GUI...the lib is capable can be extended and not bloated and it would be native
15:11:06Araqyeah
15:11:37Araqdo it ;-)
15:13:01gourfirst i've to build some examples and become a bit familiar with it
15:13:26gouri also wonder about the mechanism how to extend it with newer widgets
15:13:38gourhere i do not consider custom ones
15:18:03fowlif you port it you can use dynamic dispatch
15:28:09gourmy porting is far away...in the meantime it would be nice to settle on that lib (it seems i should better listen Araq's advices to save time) and try to bind it to Nimrod 1st
15:28:46gourhopefully, other nimrod users can come to the same conclusion so we can join forces :-)
15:29:45fowlc2nim should do most of the work for you
15:29:53*gour nods
15:30:15fowlyou'll need #def CLFEXP
15:30:41*reactormonk quit (Ping timeout: 248 seconds)
15:32:18gourfowl: i have to re-learn more about that C0s
15:32:33gourC's macros having problems with binding required lib
15:32:42gourit was long ago when i fiddled with it
15:33:18gourfor now, i converted few of my personal repos from fossil to git to brush a bit my rusty git skills
15:39:55Araqgour: we already have a claro.nim wrapper
15:40:10Araqno need for c2nim
15:40:51Araqbut the wrapper should add {.compile: "fileA.c":} etc. so it's not dependent on a DLL/lib*so
15:41:10Araq(I use the term "DLL" for both most of the time btw)
15:41:39Araq(as IMO unix couldn't name a single thing right :P )
15:42:05gourohh, that's nice
15:43:05gourthat would be very clean setup
15:43:35Araqgour: you should really learn to listen to me :P
15:43:55gourindeed
15:44:25gourAraq: i wonder who are some of your better disciples to learn the arte from 'em
15:44:30gour*art
16:14:11dom96yay, it works!
16:14:52Araqdom96: what was the bug?
16:15:16dom96Araq: OpenSSL has an internal buffer.
16:15:49dom96I was using select to check whether the socket can be read from, but OpenSSL already buffered everything.
16:33:21fowli havent had to deal with openssl yet, glad because it sounds like its all headaches
16:34:37dom96yeah, it is. Hopefully with my nice implementation you won't have to worry about it though.
16:37:32*Anaphaxet0n quit (Ping timeout: 255 seconds)
16:38:06*Anaphaxeton joined #nimrod
16:42:27fowl:)
16:52:47Anaphaxetonhi hi
16:53:05dom96hey Anaphaxeton
17:07:30*xcombelle joined #nimrod
17:08:19dom96hello xcombelle
17:08:33xcombellehi dom96
17:10:33dom96New to Nimrod?
17:10:39xcombelleyes
17:11:17dom96awesome. Let us know if you have any questions.
17:13:35xcombelleI'm coming from a python background
17:14:38dom96back in the day I came from a python background too.
17:25:20Araqwelcome xcombelle
17:28:17dom96hrm, i'm starting to think that implementing proper timeouts for httpclient is too complex, and people should just use a thread or something.
17:28:19dom96Opinions?
17:29:07Araqtimeouts are essential for httpclient
17:29:16Araqyou can't really use it otherwise
17:29:34Araqso no to threads for it
17:32:12Araqwhy is it too hard to implement?
17:32:46dom96It's not hard, it's very bloaty though.
17:32:58Araqwhy?
17:33:01dom96I have to keep track of how long each recv/recvLine/connect call takes
17:33:13Araqnah
17:33:46Araqyou should pass timeout to recv/recvLine/connect
17:34:07Araqand document this behaviour instead ;-)
17:34:37dom96Perhaps that would be good enough.
17:34:42Araqthink about it ... there is progress after all
17:34:48dom96It would be nice to have a guarantee that it won't take longer than timeout
17:34:50Araqso you shouldn't timeout
17:35:08Araqnah
17:35:24Araqthe timeout exists so you'll get an error after some time
17:35:36Araqit's not some realtime thing
17:35:50Araqone should indeed use a thread for that then
17:37:13dom96alright
17:37:22dom96In that case it's simple :P
18:03:49fowli wish there were more ODE tutorials around
18:06:59fowlalso that i took physics and knew terminology
18:07:01fowlthat would help
18:09:18Araqyou should write a "nimrod for python programmers" tutorial
18:09:24Araqthat would help too :-)
18:19:28fowli've been planning on writing something about templates and macros
18:21:06Araqalright
18:26:21fowlAraq: cool i just tried ptr(A)|ref(A) is there an overarching ptr type that matches those and the hidden ref types (string, seq)?
18:29:25Araqer ... what?
18:35:35fowlanything that could be nil?
18:46:30*sdw joined #nimrod
18:48:07Araqfowl: when compiles(x.isNil) ?
18:48:13Araqhi sdw
18:48:20sdwhey :)
18:48:48Araqyour nick looks familiar, ever been here before?
18:48:53sdwyup
18:49:11sdwmaybe a year or two ago
18:49:19sdwyou've got quite a following now
18:50:08Araqdo I? :-)
18:50:48sdware these just the usual freenode observers?
18:51:15fowlAraq: oh nice
18:51:32dom96sdw: some are absent, but mostly this is us. :)
18:52:11sdwalright. does nimrod have a cozy visual studio development envrionment yet?
18:52:38dom96A plugin for Visual Studio: no. An awesome IDE written in Nimrod: yes :P
18:52:49AraqI don't think so ... the debugger works nicely with VS though
18:52:55Araqat least that's what I've been told
18:53:44Araqer I mean VS's debugger works nicely with code generated by Nimrod
18:54:00sdwmeh, ill just install the damn thing and see for myself
19:13:52sdwha! i always see game development as an area where these "weird" languages are used https://github.com/Araq/Nimrod/wiki/Community-Projects
19:15:50Araqsdw: yeah well it's always been designed for game development
19:16:17Araqnah ... I'm not serious
19:16:41Araqsomething happened to the idea of "general purpose language" though
19:16:45sdwi am also looking to make a game with it
19:17:16sdwbut mostly just playing around
19:19:06Araqwe have a realtime GC :-)
19:19:42sdwaporia isn't building
19:19:53AraqI know
19:19:58sdwoh
19:20:07sdwversion 0.9.0 of compiler
19:20:20Araqnobody uses 0.9.0 anyway
19:20:31Araqpeople use the github version
19:20:31fowlcan we use this to query alignment for sdl_event ? http://gcc.gnu.org/onlinedocs/gcc/Alignment.html
19:21:20Araqfowl: you're better off asking for the field's offset instead
19:22:25Araqsdw: problem is: aporia doesn't build with the github version either :-/
19:22:56sdwbut the latest github is still recommended?
19:23:07sdwoh the nimrod compiler*
19:23:09sdwof*
19:23:19Araqin general yeah
19:23:22dom96Araq: It does for me.
19:23:24fowldo you think offsetof() would help libffi?
19:23:50Araqfowl: yes but there is no way to access it
19:24:11Araqexcept generating a small C program on the fly ...
19:24:39Araqdom96: alright my version of aporia is too old then I guess
19:24:50fowlthats doable, it could be ran once a release and cache the info
19:25:29Araqthat's more work than fixing the offset calculations in the compiler though
19:26:11fowli think having kind* {.size: 1.}: TEventType should be enough
19:26:24Araqbeen there done that
19:26:26fowl1 or sizeof(char)
19:26:39AraqSDL's event struct is a PITA
19:26:55Araqthe nested union in the struct etc.
19:27:01AraqI never got it right
19:27:19Araqand the compiler already uses 1 byte for 'kind' anyway
19:27:42fowlyeah
19:27:44*reactormonk joined #nimrod
19:28:35fowlit would be neat to be able to switch easily between static and dynamic linking
19:32:55fowlisnt there some tool to query this stuff from a dynlib
19:33:19Araqwhat do you want to query? offsets? no way
19:34:46fowlah
19:38:22fowlwhat makes it aligned anyways i dont see any attribute or macros used in the header
19:39:11Araqit's the combination of structs and unions
19:39:39Araqand things are aligned without any pragmas anyway in C
19:40:04*shevy quit (Ping timeout: 248 seconds)
19:40:57sdwthat crown icon is pretty sweet
19:41:26Araqthanks
19:41:33Araqwe got a new website design too
19:41:54Araqbut it's not deployed yet
19:52:59*shevy joined #nimrod
19:54:47sdwPS C:\nimrod\Aporia> .\aporia.exe
19:54:47sdwcould not import: PS C:\nimrod\Aporia>
19:55:53Araqwatch out with the >
19:56:07Araqit redirects stuff into the .exe
19:56:16fowlthats powershell prompt
19:56:24fowlPS dir>
19:56:50fowl(probably)
19:56:54sdwit is
20:01:36sdwnotepad it is!
20:08:04Araqsdw: normally it says what couldn't be imported
20:08:17sdwnormally :)
20:13:02sdwi recall at one point you were experimenting with a configuration setting that would change nimrod from python indent style to c-style braces
20:13:07sdwis that right?
20:13:29Araqyeah quite true
20:13:45Araqnothing came out of it :P
20:14:01sdwwe dont want no stinking braces anyways
20:14:04Araqexcept the compiler quite easily supports different frontend syntaxes
20:18:02sdwtabulators not allowed!?
20:18:09sdwwho turned those on anyways :P
20:18:26sdwwhat's the rationale there? easier implementation?
20:18:32Araqyeah
20:18:51AraqI can easily write a 60K compiler with 4-5 passes over the code
20:19:05Araqwith lots of innovative features
20:19:13Araqbut can't figure out how to parse a tab
20:20:10reactormonksomehow I have the feeling creating issues for zahary doesn't help as much :-(
20:20:11fowlthats why you should have went to school and learned to love java
20:21:06Araqguido himself said if he could do it again
20:21:11Araqhe would forbid tabs
20:21:24Araqor at least forbid mixing tabs and spaces in the same file
20:22:14Araqreactormonk: zahary is quite busy these days
20:22:38fowlthats why you should have went to school and learned to love java
20:22:41reactormonkother hobbies?
20:22:42fowler mb
20:23:24AraqI only know he got a new job
20:23:31reactormonkwtf /b/ - you switch forward two slides and see the exact same post O.o
20:24:33fowlis /b/ on slides now? o_o
20:25:22Araqwhat's /b/ ?
20:26:11*nolan2 joined #nimrod
20:27:20sdwAraq: principle?
20:27:24sdwI never heard the reason
20:27:41Araqmixing spaces and tabs is a recipe for desaster in python
20:27:53Araqit only works if your tabs are 8 spaces
20:28:14Araqand his reasons are that enough people struggled with it
20:28:30Araqso allowing fewer options helps
20:28:39nolan2Is there a more sophisticated REPL for the console than "nimrod i"? (I.e. something that doesn't crash on coding errors. :)
20:29:23AraqI don't recall getting any bug report for that from you :P
20:29:46nolan2Also, I think I've found a practical use for Nimrod for one of my projects. Is there any reason why I couldn't build a library in Nimrod, compile it for Android and access it via JNA?
20:29:58fowlnolan2: there's a gtk repl thats a bit better check out tools/nimrepl
20:30:18Araqnimrepl is better than "nimrod i"? no way ...
20:30:32Araq"nimrod i" keeps the session (if it doesn't crash)
20:30:33fowlwhy not? it compiles for you
20:30:35nolan2Yeah, I've seen Nimrepl, was hoping for something on the console. I'll play with that more though.
20:38:58Araqnolan2: please give a simple example where crashing it
20:40:19nolan2somemethodthatdoesnotexist "foo"
20:40:34nolan2Granted, not valid syntax, but latest trunk just crashes for me.
20:40:56Araqthat's a a new regression
20:41:03Araqit is valid syntax btw
20:41:12nolan2It seems to handle other stuff better, so my generalization was a bit hasty. I apologize for that.
20:41:23Araqnp
20:41:40Araqit is easy to fix
20:41:47nolan2Yeah, I thought so. It's been a couple months since I've played with Nimrod so I need to work through the tutorial again.
20:50:36*xcombelle quit (Remote host closed the connection)
20:51:19*filwit joined #nimrod
20:51:29filwithi peoples
20:51:43filwitdom96, you around?
20:52:28filwitwas thinking about designing the Aporia logo, and wanted to talk about it with you
20:53:09Araqhi filwit, dom96 will arrive soon here
20:55:07filwitokay, thanks
20:55:53filwitAraq, ever think about a Nimrod mascot?
20:56:12filwitmost languages don't really have a logo, just a mascot
20:56:12Araqthe crown is not enough?
20:56:29filwitthe crown is fine
20:56:31AraqI despise the "gother" if that's what you mean
20:56:43filwitgother?
20:56:55filwitOhhh...
20:56:59filwitthe Go mascot
20:57:08filwityeah... he's kinda retarded looking
20:57:20filwitit was drawn by the wife of the core developer
20:57:28Araqfits the language though
20:57:38filwitlol, Go isn't that bad
20:57:47filwitbut it's not great either...
20:58:11filwiti really don't know much about Go these days really
20:58:20filwithave you looked at Dart, btw?
20:58:25filwit(i'm sure you have)
20:58:49filwitit's a much better attempt at a language by Google, IMO
20:59:09AraqDart has an unsound type system by intention
20:59:21Araqit's horrible
20:59:38filwityeah, it's biggest flaw
20:59:42fowldom96: can you do a closure iterator for downloading files :)
20:59:47filwitbut it's much better than Javascript
21:00:02Araqthat's not hard
21:00:08filwitvery true
21:00:14Araqand I'm not sure it's true for Dart
21:00:17filwitJavascript is, by far, my least favorite language
21:00:24filwit(maybe PHP)
21:00:36filwitit's too bad i have to write in JS every day...
21:00:59Araqyou can use Nimrod's JS backend instead
21:01:00fowl<- only writes in executable html these days
21:01:18filwitAraq... i may try that one day
21:01:28filwitfowl.. what?
21:01:40filwityou mean HTML desktop apps?
21:01:53fowlno, a joke, in the worst taste
21:02:15filwitoh (i still don't get it :/)
21:02:32fowlbad joke:/
21:02:38filwitfowl: Linux or Windows?
21:02:49filwitand what distro if Linux?
21:03:08filwit(personal interest)
21:03:12fowllinux mint atm im going to switch soon not sure to what though
21:03:25filwitMint Debian?
21:03:29fowlno
21:03:54filwitI use Arch, and recommend it (if you can get it to install)
21:04:18filwityou can't go wrong with rolling-release
21:04:29fowlyea i know about, i have mixed feelings about their bleeding-edge-ness
21:04:35fowlabout arch*
21:04:48filwitI've never had problems
21:05:04filwitthere was issues when they went from initscript to systemd
21:05:12filwitbut the wiki explained everything well
21:05:34filwitwhat I like, is that I get the latest Gimp/Inkscape/Blender/etc as soon as it comes out
21:05:35fowlyea they make system breaking changes way too often
21:05:49fowli do too :)
21:05:59filwityeah but you need to get PPAs
21:06:17filwitand they really don't break the system that often
21:06:19nolan2The tutorial recommends using "when false:" to comment out large bodies of code. Does this mean that everything I comment out has to be indented to be within the when block?
21:06:35Araqnolan2: yes.
21:06:57Araqyou should get an editor that supports that
21:06:58nolan2So how is that better than commenting?
21:07:07filwitnolan2: just do: when false: for debugging, then toggle it on with: when true:
21:07:24filwitnolan2: then just shit-tab it when you're done debugging
21:07:34fowlnolan2: the code is semantically checked
21:07:38filwitnolan2: shift-tab**
21:07:53fowlor at least syntactically checked
21:08:15Araqnolan2: disabled code is not the same as a *comment*
21:08:25filwitdoes Aporia support comment/uncomment code blocks?
21:08:33AraqI think it does now
21:08:40filwitnice
21:08:55nolan2Ah, OK. Hmm.
21:09:04Araqfilwit: yep.
21:09:05filwiti am going to pull down the latest Nimrod/Aporia soon
21:09:17Araqit generates a discard """ ... """ though
21:09:21Araq:-/
21:09:46filwitthat's no good
21:09:51filwitshould just prefix '#'
21:10:59Araqyeah or use a 'when false'
21:11:55filwitidealy, the un/comment-block operation should just prefix a '#', IMO
21:12:02filwitcause it will show up as comments that way
21:12:13Araqit should be configurable
21:12:21filwittrue
21:15:21filwitwhy does Nimrod take up 100mb...
21:15:38filwitneh, ~200mb
21:16:40filwitand i'm downloading from my repo, i haven't even pulled upstream changes for ages
21:16:58filwitis there artwork or something in the repo?
21:17:18Araqno there is a long history of build.zip files though
21:17:37reactormonkAraq, hmm, a way to find why serve exits? Can I somehow set a breakpoint for an exit call?
21:17:40filwitahh, i see
21:17:57AraqI heard pruning the repo would cut off all forks:-/
21:18:30filwitit would be a good idea though, i think
21:18:40filwitjust inform those who've forked it
21:19:58Araqreactormonk: just grep for 'quit' in the compiler's sources
21:20:28Araqchances are high it's the one in service.nim:92 that causes problems
21:21:28filwitAraq: what is the likelihood that forward-declaration will be removed?
21:21:43Araqfilwit: >90%
21:22:18filwitawesome. Lot of work?
21:22:39Araqyes and it breaks all sorts of invariants
21:23:04Araqbut since you can't live with the slightest inconveniences anymore
21:23:07filwitworth it. I bet a lot of people turn away once they hear that about the language
21:23:24Araq*shrug*
21:23:44Araqit may suprise you but: I've never optimized the language design for popularity
21:23:58fowlmore difficult than implementing {.forward.}?
21:24:15Araqit's not even sound:
21:24:24Araqproc p(x: type(q))
21:24:31Araqproc q(x: type(p))
21:25:13filwitAraq: oh i'm extremely picky, i admit. That's why i started my own thing... i have very particular ideas about what's right, and I want to control all the details.
21:25:39Araqit's not that you're picky
21:25:45filwitAraq: still, i think i've presented valid reasoning, and even if not, i still attempt to provide some kind of reasoning.
21:25:59filwitAraq: not saying that you don't
21:26:24Araqit's that I often wonder if you're actually interested in the end result
21:26:32Araqer ...
21:26:39Araqthat's a more general "you" here
21:26:50filwitwhat do you mean?
21:26:55filwitby "end result"?
21:27:10Araqlike consindering what it means to get small&fast binaries without dependencies
21:27:11filwiti'm looking for a C# replacement, always have been
21:28:14Araqor that you can use a single language for scripting and system programming
21:28:51filwitof course you can... i always get told you can't, and i think people are completely wrong about that.
21:29:10filwitjust because no one had designed a language with that kind of layering yet, doesn't mean it isn't possible
21:29:20filwitlook at Unity3D, it uses C# for scripting
21:29:43filwitbut D is almost as easy as C#, and has the potential of being just as fast as C++
21:29:55filwitNimrod is the same (only completely different in design)
21:31:23filwitthat's what frustrates me so much about your design choices... you have great syntax like "var" and everything looks like functions.. there's a GC, etc.. all for convenience
21:32:47filwitbut there are a lot of other things that make it hard to learn and use
21:32:54filwit(IMO obviously)
21:33:10Araqhard to *use*? that's news to me
21:33:21Araqhard to learn? perhaps.
21:33:59filwityes, this is why i'm always bugging you about consistency. Learning is a mental challenge.. so is "use". You have to remember more things..
21:34:11filwitlike: new(type) & newSeq(type)
21:34:24filwittwo things which basically do the same thing (conceptually)
21:34:30filwittwo things to remember
21:34:44fowlyou only need newSeq() in rare cases
21:34:57shevyjust design like php - throw everything into a pot and call that a "finished language"
21:35:04filwityes, only because there's a 3rd way to do it!!
21:35:08filwitthat's exactly my point
21:35:15Araqyou also do: s = "" and not new(s)
21:35:24Araqand yet you never complain about that
21:35:42filwityes, because there is a balance
21:35:58filwityou want those things that are very very common to have sugar
21:36:00fowlfilwit: no, because if you can initialize a variable when you declare it you're better off, however it shouldnt be forced
21:36:21fowlyou can use newseq if you know what size seq you need and save an allocation
21:36:51filwitfowl: that doesn't mean the syntax wouldn't be much easy (both to learn and use) like this: var s = seq(int).new()
21:37:06filwitfowl: and every other type works the same
21:37:20filwitfowl: meaning to make an int, you can do: var i = int.new()
21:37:27Araqexcept that you don't "new" value types at all
21:37:43filwitgood point
21:37:54filwitbut for each reference type, you use that syntax
21:38:07Araqseq is not a reference type
21:38:40Araqit has some specialties/misfeatures like "nil"
21:38:50filwitso make it: var s = seq(int).set([1, 2, 3])
21:38:50Araqbut it's not a reference type
21:39:05Araqyou can that today
21:39:11Araqvar s = @[1, 2, 3]
21:39:14filwitthe point is to keep the way to do things to a minimum
21:40:06Araqbtw there are people that actually *use* Nimrod
21:40:17fowli like to do
21:40:24filwitthere are people that use Visual Basic, what is your point?
21:40:31Araqand nobody said "the cognitive load is too high"
21:40:47filwiti did
21:41:09Araqbut you're pretending to be the dumbest script kiddie ever
21:41:25Araqto arrive at a minimal design
21:41:32fowlproc loadAssets(file: string, errors: var seq[string]) = if isNil(errors): newSeq(errors, 0) #errors = @[] would work here too..
21:41:36Araqkudos to you for being able to do that btw
21:41:39fowlvar errors: seq[string]
21:41:46fowlloadAssets(file, errors)
21:42:01fowlif errors.len(): echo "has errors: " ..
21:42:08Araqbut it makes your arguments artificial
21:42:28filwitAraq: no, you just don't see why it's important to eliminate the number of ways to do things. Like I said, there's a balance
21:43:22filwitAraq: I do try (when thinking about language design) to put myself in a "learners" position
21:43:43Araqyes and you're good at that
21:44:13Araqbut these minor things you come up with are not a constant source of confusion
21:44:33Araqinstead they are still easily learned
21:44:45filwitpapercuts add up
21:45:14filwitand you're fighting against language that make things very easy, like C#
21:45:31filwitor.. you're not fighting, like you say, you don't care about popularity
21:45:36filwitwhich i don't really believe
21:46:09filwitalso, I never said Nimrod doesn't have some awesome features
21:46:29filwitand when i first started using Nimrod, I really liked the UFCS, etc
21:46:53filwitit's only more recently that i realized that leads to really hard to follow code
21:47:05fowlfilwit: it seems to me like you're focusing on the most minor syntactic details
21:47:27filwitfowl: i'm a graphics artist... people really don't realize how important the details are
21:47:42fowl"hard to follow code in my opinion"*
21:47:47filwitfowl: you can take a basic shape, and really sell it with some drop-shadow and a gradient
21:48:13filwitfow: everything I'm saying is obviously "in my opinion" i don't really see the point in explaining that
21:48:21filwitfowl: with every assertion i mean
21:49:23filwitfowl: obviously, the things I say aren't universal truths... just because I say them.
21:50:10fowli think that in general people find it easier to read, its easy to see the flow your data is taking when methods are chained together
21:50:40reactormonkAraq, nope, it's not that one
21:50:54fowlotherwise oop would be dead in the water
21:50:55filwitfowl: I can chain my methods together in my design without UFCS
21:51:05filwitfowl: also, look at Dart
21:51:20*nolan2 quit (Quit: Leaving.)
21:51:40filwitfowl: while i don't agree with the syntax entirely, they do this: Object.dosomething()..dosomethingElse() // notice the '..'
21:51:59fowlwhat is the .. for
21:52:08fowlis Object and object instance or a namespace
21:52:09filwitfowl: 'dosomething()' in the example doesn't return
21:52:24gouram i right that none of the github/bitbucket/SF's trackers has support for handling stuff via email?
21:52:52filwitfowl: so '..' means 'Object.'
21:53:30filwitfowl: it's sugar for chaining method calls... though I think there's a better way (in my design) but I won't go over that
21:53:32fowlok so its analogous to smalltalk cascading
21:53:48filwitbasically, don't know much about smalltalk
21:54:39dom96gour: github does.
21:54:40Araqreactormonk: is it msgs.SuggestQuit?
21:54:59gourdom96: it's possible to created/edit/close tickets via email=
21:55:00gour?
21:55:22dom96reactormonk: Perhaps you could add an 'assert false' in the stdlib's quite proc?
21:55:37dom96filwit: I am here now, design time?
21:55:57filwitdom96: sure! just wanted to get your ideas for the logo
21:56:32dom96fowl: I think I will transition asyncio to use closure iterators, it should then be natural to add support for downloading files.
21:56:59filwitdom96: do you have any ideas on logo design? or color preferences?
21:57:26fowldom96: cooooool:>
21:58:02filwitdom96: also, what kinda "fealings" do you want? "cool" "hip" "cute" "masculine/feminine", etc ?
21:58:07dom96filwit: I don't really have a clear idea :\
21:58:24dom96filwit: I'd say: cool, masculine.
21:58:27Araqaporia should get a hat
21:58:36filwitdom96: a hat?
21:58:42filwitAraq: a hat?
21:58:50Araqa wizard's hat
21:59:04Araqcause it does all the magic :-)
21:59:15filwitwell Aporia means "deep thought" or a "butterfly"
21:59:20filwitor something like that
21:59:25dom96lol, so every nimrod tool will be something to wear on your head? :P
21:59:30filwitdon't really have to keep it in those boundries
21:59:35Araqdom96: that's the idea
21:59:40dom96I wouldn't mind a butterfly
21:59:46Araqoh come on
21:59:49filwitLOL
21:59:51Araqa butterfly is lame
21:59:54fowlfilwit: f2(f1(a)) is not chaining as a.f1.f2(), you see how the flow requires you to look inside the expression and move outwards (to the left no less, i reckon that most of the programmers reading/writing with ascii characters dont read right to left)
21:59:55filwiti kinda like Araq's idea
22:00:12Araqand already taken by perl6 anyway
22:00:20fowli dont understand what your point was with dart's Object.foo()..foo2()
22:00:22dom96A wizard hat though...
22:00:28dom96Sorry, I don't like that.
22:00:47dom96I'm visualising some silly cartoon hat.
22:01:17dom96filwit: You can draw a concept if you want. But i'm not sure i will like it.
22:01:20Araqthink of Gandalf's hat :P
22:01:33filwitfowl: first, 'f1' IMO, should always require the '()' brackets (to indicate it's not a property), and i completely agree with you... i just don't agree with global floating functions in the first place.
22:01:37fowldom96: make it a unicorn with a machete for a horn
22:01:42dom96that does butch it up a bit.
22:01:53dom96now, a unicorn would be cool :P
22:02:01filwitfowl: everything should be "purely" OOP, with a "type" being the top-level encapsulating object (no modules)
22:02:30dom96Not sure about the machete.
22:02:38Araqexcept that's not what a "type" is at all :P
22:02:45filwitfowl: therefor, everything works like UFCS does.. without the alternative way: f2(f1(a))
22:02:54fowlfilwit: have you tried ruby?
22:03:30filwitfowl: glanced at it, but if you don't mind, I will talk to you about language design a little later
22:03:44fowlfilwit: nvm, i cant continue this conversation because its not going anywhere
22:03:48fowlafk
22:04:10dom96filwit: hah, you could actually draw Deep Thought, the big robot from Hitchiker's guide to the galaxy :P
22:04:35filwitdom96: lol
22:04:45filwitthat would be interesting
22:05:23filwitstill.. i when i said I liked Araq's idea, I was thinking more like a hat with a butterfly on it...
22:05:41filwitbut you probably wont like that... yes?
22:05:45Araqno butterflies
22:05:52dom96no hats :P
22:05:53Araqwe're no hippies
22:06:03filwitbutterflies are hippy...
22:06:23filwitwell.. sortof
22:06:32filwitarent**
22:06:50filwitokay, so.. no butterflies and no hats...
22:06:58filwit"cool" and "masculine"
22:06:58reactormonklib/system.nim(885, 62) Error: undeclared identifier: 'assert'
22:07:01reactormonkO.o
22:07:04Araqbutterflies are very bad for the weather
22:07:12filwitwhat?
22:07:22dom96hrm, i'm not sure "Aporia" actually means "Deep thought"
22:07:23filwitweather?
22:07:36dom96"An irresolvable internal contradiction in a text, argument, or theory."
22:07:45dom96"The expression of doubt."
22:07:47Araqever heard of the "butterfly effect"?
22:08:08Araqbutterflies cause rain and snow
22:08:30dom96Yeah, so do I, when I fart.
22:08:51Araqthat's why you'll pay a tax for it soon
22:09:32filwitlol, wut r u guys talking about?
22:09:58fowlmake the logo an earth with a fennec fox wrapped around it
22:10:08fowland change the name to firefax
22:10:31filwitlawl
22:10:31*Zerathul joined #nimrod
22:11:12dom96Lets use a Yu-gi-oh character! http://yugioh.wikia.com/wiki/Aporia
22:11:44filwitno
22:11:49filwit:-P
22:12:08dom96Don't you want to practice your anime drawing skills?
22:12:21filwitit's your logo, dom96, so i will do whatever you want
22:12:29filwitLOL
22:12:37filwiti know you're just joking (at least i hope)
22:12:48dom96lol
22:13:54dom96There really isn't much else about what Aporia means on the internet
22:14:01dom96I really did pick one of the dying words.
22:15:38dom96Look someone made some header text for us: http://1.bp.blogspot.com/_8FZJEaIVhug/TJm0qfjEy-I/AAAAAAAAALc/dCPHrjsqfNA/s1600/Aporia-Logo1.jpg
22:15:56filwityes, your choice was horrible for design.. lol
22:15:59filwitbut it sounds cool
22:16:11filwitand it gives us a lot of creative freedom really
22:16:11dom96yep
22:16:23filwitwe can do something more abstract too
22:16:36filwiti have an interesting idea actually
22:16:41dom96Well I can see memes with this word... lol
22:16:49dom96http://media.tumblr.com/tumblr_ljihzzJAwK1qbolbn.jpg
22:17:20dom96This looks nice: http://f0.bcbits.com/z/11/02/1102470375-1.jpg
22:17:31dom96filwit: what's your idea?
22:18:24*Zerathul quit (Quit: ChatZilla 0.9.90 [Firefox 18.0.2/20130201065344])
22:18:34filwiti will have to show you
22:18:40filwitone second though
22:18:55filwitgive me a minute, then i will jump into designing and show you something
22:19:37dom96hrm, I'm thinking that perhaps this would look nice as a logo: http://www.jpmoth.org/~dmoth/Butterflies%20of%20China/03_Pieridae/Aporia%20delavayi/Aporia%20delavayi_070702386.jpg
22:20:07dom96It's not very colorful, if you kept it that way maybe it would be quite a "cool" and "dark" butterfly?
22:20:31*FreeArtMan quit (Quit: rm -rf /)
22:21:12*gour quit (Quit: WeeChat 0.4.0)
22:58:31*nolan2 joined #nimrod
23:10:04reactormonknew design up... when?
23:10:47Araqwith the next release, reactormonk
23:15:54NimBotAraq/Nimrod 02ba4f7 Dominik Picheta [+0 ±3 -0]: Fixed timeouts for sockets, implemented timeouts in httpclient and fixed... 2 more lines
23:18:09nolan2So what is the canonical wayto implement string conversion for a Nimrod type? Implement a `$` proc, or is there another method that calls `$`?
23:18:39Araqimplement a $ proc
23:19:03nolan2Cool, thanks.
23:32:01reactormonkAraq, quit proc is magic btw...
23:37:35reactormonkso can't do that
23:38:22reactormonkwait..
23:38:24dom96create a 'quit' proc, rename the current 'quit' proc, assert false in the new proc :P
23:38:48reactormonkdom96, just did that... assert not defined.
23:39:09reactormonkwhy can't raise raise a string? :-/
23:40:26dom96use newException
23:41:17Araqreactormonk: assert is defined somewhere in system.nim
23:41:37Araqmove the 'quit' around so that it comes after the assert definition
23:42:58reactormonkAraq, assert depends on raise depends on quit more or less
23:43:14Araqsee?
23:43:26Araqyou're about to produce an endless recursion
23:43:43Araqand the "no forwarding" rules helped to make you aware of it :P
23:44:08Araqbut no no no ... it's inconvenient to have to think about dependencies, I know, I know
23:46:05reactormonkhow can I print the stacktrace?
23:46:52Araqecho e.getStackTrace