| 22:41:47 | * | NimBot joined #nimrod |
| 22:41:57 | dom96 | !ping |
| 22:41:57 | NimBot | pong |
| 22:42:08 | dom96 | Alright, everything works now :) |
| 22:44:10 | filwit | Araq: I kinda agree with you that 'else' should be indented after 'case' statements |
| 22:44:32 | Araq | good |
| 22:44:38 | Araq | !lag |
| 22:44:38 | NimBot | 51ms between me and the server. |
| 22:54:43 | filwit | so a variant object is like a union with runtime checks? |
| 22:57:16 | Araq | yes |
| 22:57:31 | Araq | or like a 'sum' type if you're into FP |
| 22:58:17 | Araq | in fact FP languages tend to "prove" the correct usage but this doesn't work well with nimrod's mutability of objects |
| 22:58:21 | filwit | are these runtime checks removed with release builds btw? |
| 22:58:29 | Araq | yes |
| 22:58:33 | filwit | great |
| 22:58:40 | Araq | no ... ;-) |
| 22:58:51 | filwit | damn... ;0 |
| 22:59:02 | Araq | but good enough for now |
| 22:59:35 | Araq | filwit: you will always be able to turn them off don't worry |
| 23:00:00 | Araq | but I'd prefer more efficient checks instead of none |
| 23:00:54 | Araq | it depends on your use case, but I feel a bit uneasy to deploy server software without all these safety checks |
| 23:01:12 | filwit | well I'd love effecient checks as well. But I like the idea of checks-at-debug, fast-as-possible at release |
| 23:01:22 | Araq | sure |
| 23:01:55 | filwit | so I'm totally find if the checks are there with -d:release, as long as I can pass another flag that turns them off |
| 23:02:26 | Araq | I'll see how clang's hot/cold code distinction helps |
| 23:02:29 | filwit | but all that's not so pressing right now |
| 23:02:33 | Araq | for the runtime checks |
| 23:03:02 | Araq | in general it's hard because we don't control the backend |
| 23:03:45 | Araq | otherwise we could easily keep the overhead of these checks to a minimum |
| 23:05:07 | filwit | I see, well you know a whole lot more about that stuff than I do, so I'm sure you'll make the right choices :) |
| 23:12:46 | Araq | in fact, the situation is already very good as you can turn the checks on and off for specific sections of code :-) |
| 23:13:07 | Araq | so turn them on, profile and turn off for the bottlenecks :D |
| 23:13:09 | filwit | {.push checks.} you mean? |
| 23:13:14 | Araq | yes |
| 23:13:30 | filwit | ya I liked that {.push.} when I saw it |
| 23:14:18 | filwit | is there a syntax to pass procs around cleanly? |
| 23:14:20 | filwit | meaning: |
| 23:14:40 | filwit | proc foo(callback:proc()): |
| 23:14:44 | filwit | callback() |
| 23:14:48 | filwit | then... |
| 23:15:02 | filwit | foo((){ |
| 23:15:06 | Araq | foo(proc () = echo "hi") |
| 23:15:07 | filwit | doSomethign() |
| 23:15:10 | filwit | }) |
| 23:15:31 | filwit | right, great |
| 23:15:34 | filwit | let me try |
| 23:17:27 | filwit | that's awesome, and very clean |
| 23:17:45 | Araq | thanks |
| 23:17:49 | filwit | are proc var's subject to inlining at all? |
| 23:17:56 | filwit | i'm asuming no |
| 23:18:00 | filwit | assuming* |
| 23:18:00 | Araq | not yet |
| 23:18:07 | filwit | so it's possible? |
| 23:18:09 | Araq | but it's simple to implement |
| 23:18:18 | filwit | nice |
| 23:19:00 | filwit | I was telling you before about my jQuery-style game engine idea, being able to supply functions to procedures like this may be a key component |
| 23:19:20 | filwit | also, I noticed that there's JSON style syntax somewhere... |
| 23:19:25 | filwit | which is another |
| 23:19:35 | Araq | there is a json module yes |
| 23:19:40 | Araq | heavily used in fact |
| 23:20:09 | filwit | i mean the: var data = {"name":"Philip", "age":24} thing |
| 23:20:32 | filwit | that's also very good for MongoDB support I'm sure |
| 23:20:46 | Araq | it's just sugar for an array of tuples |
| 23:21:13 | Araq | [("name", "Philip"), ("age", "24")] |
| 23:21:21 | filwit | yes, but the syntax is clean enough to use for things like MongoDB in the same way you use it with Javascript |
| 23:21:29 | Araq | note the need for consistent types |
| 23:21:31 | Araq | however |
| 23:21:39 | Araq | you can pass it to a macro :-) |
| 23:21:43 | filwit | ah, I see |
| 23:22:03 | filwit | yes, macros make that very useful |
| 23:23:07 | Araq | you can also do: |
| 23:23:24 | Araq | template `<=` (a, b: expr): expr = (a, b) |
| 23:23:24 | filwit | damn, man. Isn't it like 1:30 over there? |
| 23:23:45 | Araq | ["key" <= "value", "key2" <= "value3"] |
| 23:23:48 | Araq | etc. |
| 23:23:52 | Araq | ugh |
| 23:23:55 | Araq | you're right |
| 23:24:25 | filwit | ya, I always end up staying up to late and paying for it in the morning :) |
| 23:24:56 | Araq | yeah good night |
| 23:25:01 | filwit | night |