00:00:08 | * | Raynes quit (Ping timeout: 272 seconds) |
00:02:01 | * | Raynes joined #nimrod |
00:02:11 | * | Raynes quit (Changing host) |
00:02:11 | * | Raynes joined #nimrod |
00:07:51 | * | dunpeal left #nimrod (#nimrod) |
00:25:15 | * | dom96 quit (Excess Flood) |
00:27:13 | * | dom96 joined #nimrod |
00:47:37 | * | q66 quit (Remote host closed the connection) |
00:48:52 | * | q66 joined #nimrod |
00:51:12 | * | q66 quit (Read error: Connection reset by peer) |
00:51:31 | * | q66 joined #nimrod |
01:09:45 | IrvMG | Bye |
01:09:53 | * | IrvMG quit () |
02:03:12 | * | filwit joined #nimrod |
02:15:37 | Araq | hey filwit |
02:15:49 | filwit | hey Araq, still up eh? |
02:15:59 | NimBot | Araq/Nimrod master 59a7a09 Araq [+0 ±2 -0]: fixes #681 |
02:16:09 | Araq | yeah because of this fix |
02:16:17 | filwit | just got on to ask the Kate folks some questions (for my Kate Nimrod scheme) |
02:16:22 | filwit | lol |
02:16:30 | filwit | bug fixing in the middle of the night |
02:16:31 | filwit | nice |
02:16:42 | filwit | (or not nice, i know how that goes, lol) |
02:17:14 | filwit | i was actually just making a forum post, but i guess i'll ask you instead |
02:17:26 | filwit | i was playing around with SIMD last night |
02:17:38 | filwit | everything's working, but i'm not sure i'm doing something right |
02:17:53 | filwit | let me make a gist really quick, one sec |
02:19:54 | Araq | when everything's working everything is fine ;-) |
02:21:22 | filwit | well my question is about {.incompleteStruct.} |
02:21:24 | filwit | https://gist.github.com/PhilipWitte/7714570 |
02:21:49 | filwit | basically in C, common practice here is to have a union of __m128 and a float[4] |
02:22:13 | filwit | then you just access the float array if you need to pull individual components from the vector |
02:22:37 | filwit | (which you don't want to do often with SIMD vectors, so the interface doesn't need this really) |
02:22:48 | filwit | still, i want to know if the bottom code block is possible |
02:23:08 | filwit | it fails for me, but not sure if it's just cause i'm not doing it right |
02:24:07 | fowl | filwit, just make the fields accessible like you would access them from c |
02:24:18 | Araq | use this instead: {.bycopy, incompletecstruct, header: "...".} |
02:24:54 | Araq | don't make the array final and pure (is that even allowed?) |
02:25:06 | filwit | Araq: does one of those imply {.pure.}.. cause SIMD vectors need to be pure |
02:25:23 | filwit | you don't want your SIMD vectors padded with typeinfo |
02:25:24 | Araq | "object" without inheritable or "of" is nowadays pure |
02:25:39 | filwit | well i'm compiling with 0.9.2 |
02:25:45 | filwit | 0.9.3 fails |
02:25:50 | filwit | segfault for something |
02:25:50 | Araq | even with 0.9.2 |
02:25:53 | filwit | k |
02:26:01 | filwit | fowl: don't know what you mean.. |
02:26:12 | filwit | fowl: in C you use a union, which Nimrod doesn't have |
02:26:19 | Araq | oh and fowl is right, declare the fields |
02:26:36 | filwit | i cant... |
02:26:36 | fowl | filwit, put {.importc.} on the fields |
02:26:44 | filwit | ahh... |
02:26:48 | filwit | okay, let me try that |
02:27:20 | fowl | type vec4* {.importc: "cname", header: h.} = object # <- now this is not created at all by nimrod, it simply nimrod's name for __m128 |
02:28:02 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
02:28:18 | filwit | fowl: yeah i know, my question was about the .x, .y, etc parts |
02:28:38 | NimBot | Araq/Nimrod master 490ae81 Araq [+0 ±1 -0]: updated fsmonitor module |
02:29:37 | filwit | bleh, it's giving me that "Execution of an external program failed" error when i do this... |
02:30:02 | fowl | compile with --parallelbuild:1 to see gcc's error |
02:30:12 | filwit | type Vec4 {.importc:.., header:..}= object; x, y, z, w {.importc.}: float32 |
02:30:21 | filwit | fowl: k, will try |
02:30:30 | fowl | you need to mark x,y,z AND w with importc |
02:30:54 | filwit | individually? |
02:31:04 | filwit | i'm marking them all in one line |
02:31:08 | filwit | does that not mark them all? |
02:31:14 | fowl | no it doesnt |
02:31:31 | fowl | i think i have a macro that does this somewhere |
02:31:43 | fowl | well maybe it does, check the output c |
02:31:58 | filwit | still giving me GCC errors, once sec |
02:32:30 | filwit | error: request for member x in something not a structure or union |
02:32:30 | filwit | LOC2 = nsuformatFloat(((NF) (this_78101.x)), ((NU8) 1), 3); |
02:32:59 | filwit | the formatFloat is from me trying to echo the individual components |
02:33:16 | * | DAddYE_ quit (Remote host closed the connection) |
02:33:29 | filwit | BTW, in case you don't know, __m128 doesn't have any x/y/z/w values |
02:33:48 | Araq | well how should this work then? |
02:34:03 | filwit | well that was my question, lol |
02:34:06 | fowl | filwit, try this? http://stackoverflow.com/a/12624684 |
02:34:23 | filwit | i just wanted to make sure incompleteStruct wasn't messing with the type-size in Nimrod some place |
02:34:47 | fowl | filwit, seems that you dont need to importc each field: https://gist.github.com/fowlmouth/7714680 |
02:34:50 | filwit | flow: that's C code man.. i can't use Unions in Nimrod |
02:35:00 | filwit | fowl: and i've done this in C |
02:35:20 | filwit | fowl: also, thanks for the info about the fields |
02:36:07 | filwit | Araq: so incompleteStruct wont mess up the sizeof info for Nimrod anywhere? |
02:36:22 | Araq | sure it will |
02:36:40 | filwit | Araq: is there a way to force the size through a pragma? |
02:37:25 | Araq | .size only works for enums afaik |
02:37:58 | Araq | you can use: |
02:38:37 | Araq | copyMem(addr myTempArray, m128stuff, sizeof(myTempArray)) |
02:38:47 | Araq | myTempArray[i] |
02:39:03 | Araq | that's what the C code in stack overflow does |
02:39:13 | Araq | no need for a union |
02:39:24 | filwit | yes, like i said, i've already got it working |
02:39:58 | filwit | i just didn't know how to make it work with sizeof(someVec4) |
02:40:14 | Araq | not sure what you mean, but I need to sleep now |
02:40:14 | filwit | since incompleteStruct seems to remove typeinfo |
02:40:25 | filwit | okay, night |
02:40:30 | Araq | however! |
02:40:50 | filwit | one thing though, you said to remove {.final.}, but i want to make sure this type is not inheritable.. do i still need the pragma? |
02:41:01 | Araq | I want you to design a mascot for Nimrod. We decided on a honey badger with a crown. :D |
02:41:15 | filwit | lol, okay |
02:41:16 | Araq | priority is super low though |
02:41:24 | filwit | wish i was there for that conversation |
02:41:44 | filwit | it's okay, i can draw up a couple of designs for you to choose from :) |
02:41:49 | Araq | read the logs from 1-3 days ago |
02:42:02 | filwit | k, forgot how to see the backlogs |
02:42:07 | EXetoC | mushroom mushroom |
02:42:10 | Araq | "object" without inheritable is not inheritable, no need for 'final' |
02:42:19 | filwit | EXetoC: LOL |
02:42:34 | filwit | EXetoC: takes me back... |
02:42:46 | filwit | Araq: k, thanks |
02:42:47 | * | Araq doesn't get the joke |
02:43:08 | filwit | http://www.youtube.com/watch?v=hGlyFc79BUE |
02:43:21 | ryeguy | snaake...snaaakkee |
02:43:30 | filwit | ^ XD |
02:44:09 | ryeguy | im happy i looked into nimrod, it pleases me more than rust |
02:44:37 | filwit | yeah, Nimrod is nice in many ways :) |
02:44:38 | * | mflamer joined #nimrod |
02:44:40 | fowl | ryeguy, i think we need more kinds of pointers identified by symbols |
02:45:15 | fowl | filwit, can you give me an example use of this SIMD, something i can run locally |
02:45:26 | fowl | filwit, im not ready to give up on union |
02:45:35 | filwit | sure, one sec |
02:47:28 | filwit | fowl: https://gist.github.com/PhilipWitte/7714570 |
02:47:54 | filwit | just a copypasta of my simd module + a use case |
02:49:04 | fowl | ugh you could have left them separate files |
02:49:48 | filwit | lol.. is it that hard to copy-paste into your own file? |
02:50:08 | fowl | no |
02:50:08 | OrionPKM | so.. anyone try gzipping in nimrod? |
02:50:28 | fowl | OrionPKM, its just like doing it in c |
02:50:45 | OrionPKM | with what library |
02:50:49 | fowl | zlib |
02:51:16 | OrionPKM | with which function? |
02:52:37 | * | EXetoC quit (Quit: WeeChat 0.4.2) |
02:53:18 | Araq | good night |
02:53:24 | filwit | night, Araq |
02:53:25 | OrionPKM | ah it looks like the 'compress' has a 2 byte header and 4 byte trailer fowl |
02:53:27 | OrionPKM | night araq |
02:53:30 | OrionPKM | thanks for getting that bug |
02:53:57 | fowl | ? |
02:54:52 | * | ics joined #nimrod |
03:00:29 | * | DAddYE joined #nimrod |
03:00:53 | * | DAddYE quit (Remote host closed the connection) |
03:01:13 | fowl | OrionPKM, i used compress/deflate in keineschweine for sending assets |
03:01:26 | fowl | OrionPKM, iirc deflate is weird because you have to know the uncompressed data length |
03:01:57 | OrionPKM | fowl the compress works ish |
03:02:00 | OrionPKM | for chrome |
03:02:03 | OrionPKM | but IE is failing |
03:04:56 | fowl | filwit, im trying to figure out why this is failing |
03:05:09 | filwit | it fails with 0.9.3 |
03:05:14 | filwit | compiles with 0.9.2 tho |
03:05:58 | * | DAddYE joined #nimrod |
03:06:01 | filwit | dunno why 0.9.3 fails, haven't looked into it.. also that RayTrace benchmark i ported a little while ago fails with 0.9.3 |
03:07:40 | fowl | when i changed vec4.new(...) to setvec4(..) it compiles |
03:08:06 | filwit | hmm... well that explains probably why the RayTracer fails too.. |
03:08:58 | filwit | keep in mind that setVec4 takes the components in reverse order |
03:09:04 | filwit | w, z, y x |
03:09:11 | fowl | it outputs 12, 10, 8, 6 |
03:09:20 | fowl | ah ok |
03:09:52 | filwit | yeah, part of the reason i made that non-exposed and used my own interface to it |
03:10:55 | OrionPKM | fowl |
03:11:09 | OrionPKM | if I wrap the result of compress() in a gzip header |
03:11:11 | OrionPKM | and footer |
03:11:28 | OrionPKM | and hack off 2 bytes off the front, 4 bytes off the end, it works |
03:11:44 | OrionPKM | compress uses zlib format, not raw deflate |
03:14:28 | fowl | filwit, https://gist.github.com/fowlmouth/7714950 |
03:15:17 | filwit | fowl, thanks for the updates |
03:16:27 | filwit | so i guess it's just that i'm using a template instead of an inline proc huh? |
03:18:59 | fowl | the typedesc[vec4] function was the problem with compiling |
03:19:24 | fowl | x,y,z,w,+=,-=,/=,*= dont need to be templates they should be inline procs |
03:19:57 | fowl | currently you can do newvec4(1,2,3,4) += newvec4(..) which is wrong (it should take a var type) |
03:20:35 | filwit | i see, that makes sense |
03:22:20 | filwit | why did you make the x/y/z/w templates into inline procs though? |
03:23:25 | * | DAddYE quit (Remote host closed the connection) |
03:23:54 | filwit | you also removed noInit from the importc procs.. |
03:23:55 | filwit | reason? |
03:24:11 | fowl | noinit isnt needed |
03:24:12 | filwit | they automatically are noInit or something? |
03:24:22 | fowl | noinit just says dont initialize the result variable |
03:24:41 | filwit | right.. so without a body, they don't have a result var.. |
03:26:18 | filwit | ps, for the $ proc, should i be using noInit? |
03:26:30 | filwit | will that cause some problem with strings at all? |
03:26:50 | filwit | it works.. so i doubt it, but i'm not positive |
03:27:07 | fowl | nah its not a problem |
03:27:42 | fowl | if you did var x{.noinit.}: string it means it wont be initialized to 0 (null/nil) |
03:27:54 | fowl | not a problem if you're about to set it to something |
03:28:12 | filwit | yeah i know what noInit does |
03:28:22 | filwit | i just added it to be sure |
03:28:24 | filwit | mostly |
03:30:22 | fowl | no reason x/y/z/w couldnt be templates i guess |
03:30:42 | filwit | yeah i left those as templates |
03:30:59 | filwit | but i'm not near done with this |
03:37:56 | filwit | your new and newVec4 procs should probably be noInit for optimization? |
03:38:21 | filwit | or does that not matter cause you're not using result/return? |
03:39:07 | fowl | you're micro-optimizing |
03:39:17 | filwit | cause it's simd... |
04:07:15 | * | brson joined #nimrod |
04:34:35 | * | DAddYE joined #nimrod |
04:38:57 | * | DAddYE quit (Ping timeout: 246 seconds) |
04:52:47 | filwit | i'm hoping i can convince Araq to make comments not part of the AST |
04:53:12 | filwit | Kate's block-comment command simply can't work with it as-is |
04:57:25 | * | OrionPKM quit (Remote host closed the connection) |
04:57:57 | fowl | why not |
04:58:26 | filwit | cause it either places comment chars before all whitespace, or after all whitespace |
04:58:51 | fowl | after whitespace should work |
04:58:55 | filwit | so if you comment-out a block with multiple levels of indentation, it makes Nimrod barf |
04:59:11 | filwit | fowl: nah, i've tried, it doesn't work |
05:00:35 | fowl | aporia puts discard """ in front and """ after |
05:00:49 | filwit | yeah i noticed.. i really don't like that much.. |
05:01:01 | filwit | i'm sure dom has his reasons for it, but i wish there where options |
05:01:30 | filwit | really, it doesn't make too much sense to have all comments part of the AST, only doc-comments need to be |
05:01:37 | filwit | i've heard Araq mention as much on here before |
05:01:51 | filwit | but i'm not sure all the reasons he did it that way |
05:02:34 | filwit | it's possible it could be useful for some obscure reason, and in that case i would argue for a compiler switch to enable AST comments, but have them disabled by default |
05:04:30 | * | OrionPKM joined #nimrod |
05:07:40 | * | mflamer quit (Ping timeout: 272 seconds) |
05:20:03 | * | OrionPKM quit (Remote host closed the connection) |
05:25:16 | * | mflamer joined #nimrod |
05:37:45 | * | DAddYE joined #nimrod |
05:37:57 | * | DAddYE quit (Remote host closed the connection) |
05:38:08 | * | DAddYE joined #nimrod |
05:46:34 | ryeguy | yeesh, it's convention to use hungarian notation? |
05:46:54 | ryeguy | pretty embarassing to have in a modern language like this |
05:47:37 | filwit | i agree... i've been complaining about that for awhile.. lol |
05:48:03 | filwit | but really, you can use whatever convention you want, the standard lib can always be updated at some point |
05:48:16 | ryeguy | i know, but i just really dont want to see it catch on, haha |
05:48:59 | filwit | yeah, i agree completely. Araq always argues that it's too verbose any other way... |
05:49:15 | ryeguy | i don't understand |
05:49:22 | ryeguy | what problem is it solving? |
05:49:28 | ryeguy | if they are dropped what happens? |
05:49:52 | filwit | well.. like NnkProc instead of NimrodNodeKind.Proc |
05:50:16 | filwit | i prefer the latter, but other's argue it's too verbose |
05:50:37 | ryeguy | is that an enum? |
05:50:43 | filwit | yes |
05:50:48 | fowl | filwit, thats fine if everything had intellisense |
05:51:05 | filwit | it's fine even with intellisense.. |
05:51:10 | filwit | without** |
05:51:20 | fowl | maybe while you're young |
05:51:28 | ryeguy | i would rather see the verbose version because it's more readable |
05:51:28 | fowl | carpel tunnel is a real threat to aging programmers |
05:51:30 | filwit | i'm older than you, lol |
05:51:35 | filwit | oh i see |
05:51:43 | filwit | that's a horribly silly argument tho |
05:51:55 | ryeguy | i was more talking about the T prefix for types and the F prefix for fields |
05:52:15 | filwit | ryeguy, that might be fixed in the future actually |
05:52:37 | filwit | there's been discussion about it on the forums, even Araq agrees it will help adoption if the T/P thing was removed |
05:52:44 | ryeguy | thats good |
05:52:55 | filwit | i will absolutely never, ever, ever use T/P on my type names |
05:53:03 | ryeguy | that is a good point - it sounds stupid, but there are people who will not use a language over reasons like this |
05:53:12 | ryeguy | same, i would never use it |
05:53:35 | filwit | exactly.. i've been trying to tell Araq that other's care about this sort of thing a whole lot more than he does for awhile now... |
05:54:05 | ryeguy | we already have significant whitespace, so let's try to keep it to just one petty feature people may hate :) |
05:54:21 | ryeguy | i can bikeshed all day, i agree |
05:54:30 | ryeguy | those things do bother me a lot, but not enough to turn me off the language |
05:54:31 | fowl | oh well there will never be a shortage of things for people to complain about |
05:55:03 | ryeguy | thats true, but things should be weighed against that |
05:55:05 | filwit | fowl, that's not an argument really though, it's just as appeal to not care about anything.. |
05:55:22 | fowl | i care about one thing: nihilism |
05:55:30 | filwit | LOL |
05:55:59 | ryeguy | i think using 'proc' is weird |
05:56:04 | ryeguy | why not 'def', especially since it looks like python |
05:56:11 | ryeguy | or rust's 'fn' |
05:56:26 | filwit | ryeguy, I came from C#/D as well, and a lot of Nimrod's idioms are alien |
05:56:32 | filwit | they grow on you quickly though |
05:56:38 | filwit | not the T/P thing.. but others |
05:56:40 | ryeguy | i'm sure they will |
05:56:48 | ryeguy | i just question being different for the sake of being different |
05:57:05 | ryeguy | because the number of people it will turn off is non-zero, even though it's a stupid reason |
05:57:16 | filwit | ^ exactly... |
05:57:32 | filwit | unfortunately Nimrod wasn't really written with "popularity" in mind |
05:57:51 | ryeguy | of course not, but popularity is healthy for the project in many ways |
05:57:53 | filwit | regardless, it's a very feature-rich language, and very capable |
05:58:25 | filwit | i can adjust to a lot of things, and it looks like Nimrod will evolve well in other areas that i don't like, so i'm happy with it |
05:58:44 | filwit | still, i completely agree that it should take more care to help others embrace it |
05:59:29 | filwit | Araq always says these things are pointless, and that naming at this level doesn't matter... but i wonder how many hours he's spent debating that very topic, lol |
05:59:46 | ryeguy | filwit, you mentioned you came from C# - how would you compare nimrod to it? |
05:59:59 | ryeguy | that was/is actually the language i'm considering using for a game |
06:00:17 | fowl | i like having TType and PType |
06:00:29 | filwit | ryeguy, i'm writing a game-engine in Nimrod: http://reign-studios.net/philipwitte/hymn/ |
06:00:32 | fowl | especially when the difference between struct and pointer to struct matters |
06:00:54 | filwit | ryeguy: it's hard to generalize a comparison between C# and Nimrod |
06:01:17 | filwit | ryeguy: Nimrod is much faster, but uses a completely different approach to organization |
06:01:33 | fowl | filwit, what's {.last.} do |
06:02:20 | filwit | fowl: it controls when the proc's code is executed relative to other proc's of the same name that are mode-dependent |
06:02:29 | filwit | fowl: see the mode's example at the bottom |
06:02:45 | fowl | filwit, do a design for a lottery site that takes bitcoins plz, we can split the profits |
06:03:16 | filwit | fowl, i'm fundamentally against doing this for profit, but i will consider bitcoin, lol |
06:03:48 | ryeguy | filwit, let me ask this way: C# is more established, has visual studio + resharper, has way more libraries, bigger community, etc. yet you're using nimrod. What made you choose it? |
06:03:50 | filwit | fowl, though i really know nothing about bitcoin at all, so i will let you contribute that once I'm there |
06:04:20 | filwit | ryeguy: performance and macros |
06:04:24 | fowl | filwit, just need the design and a wallet, i have no intention of anybody winning any lotteries lol |
06:04:37 | fowl | filwit, we may have to change site names every few weeks to stay profitable |
06:05:10 | filwit | ryeguy: see the RayTracer demo i ported to Nimrod & C# for performance comparison: https://github.com/zezba9000/RayTraceBenchmark |
06:05:21 | fowl | filwit, are you using your own SDL wrapper |
06:05:37 | filwit | ryeguy: if you notice in my Hymn slides, i have a 'part' keyword.. that's a Nimrod macro that allows me to do some really cool things |
06:06:00 | filwit | ryeguy: you can do similar things with C#'s NRefactory, but Nimrod's is a bit better in some ways |
06:06:13 | ryeguy | thats a pretty big performance difference |
06:06:31 | filwit | fowl: not using your SDL wrapper yet |
06:06:39 | filwit | fowl: but will eventually switch to it |
06:06:47 | ryeguy | on the topic of sdl, is there an sdl-2 wrapper? |
06:07:03 | filwit | fowl: i'm not focused on the OpenGL part atm, i got that working and am not writing the connection between the parts and the editor |
06:07:08 | fowl | ryeguy, yes |
06:07:29 | filwit | ryeguy: yes, fowl has a SDL2 wrapper, and it's really really simple to wrap in Nimrod regardless |
06:08:29 | filwit | ryeguy: yeah, the performance different between Nimrod and C# is really bit, especially on ARM |
06:08:50 | filwit | ryeguy: and that's actually not as optimized as it could be (i added a few bits later, but didn't commit) |
06:09:09 | fowl | filwit, this week i am going to unify TEvent into a variant type |
06:09:10 | filwit | ryeguy: also, that's not even touching SIMD, which should make things run significantly faster with some more work |
06:09:40 | ryeguy | filwit: simd is an embarassing ommision from .net. At least mono has it though |
06:09:45 | filwit | ryeguy: and C# doesn't really have SIMD support... Mono does, but it's not the greatest, and doesn't work on ARM platforms |
06:10:11 | filwit | fowl: what do you mean by the TEvent thing? |
06:11:09 | filwit | ryeguy: to answer your earlier question a bit more, I'm using Nimrod because I'm basically planning on writing my own Editor/IDE that's really unique... so VS and stuff would only help in the short-term |
06:11:30 | fowl | make it more like it is in sdl2 (they use a union) |
06:11:35 | fowl | no more casting |
06:12:27 | filwit | ryeguy: i don't like C# because it's purposefully gimped.. it gives you some power through unsafe, but it's slow, and not truly native. It doesn't sound like a good base to start a major project on which i will be working on for the next few years at least |
06:12:40 | filwit | fowl: i see, that's cool. |
06:13:40 | filwit | fowl, ryeguy: here's my SDL2 wrapper for comparison: https://gist.github.com/PhilipWitte/7715941 |
06:14:15 | filwit | the heck? github doesn't color 'export' correctly huh... |
06:14:53 | ryeguy | i like C#, it's probably my favorite general purpose language, and it's "fast enough" for most things, but i hate some of the gotchas in the language and i'd hate to develop a game in it |
06:15:05 | ryeguy | some behind-your-back allocations, some hidden performance gotchas, etc |
06:16:40 | filwit | yeah i agree, C# is nice for many things, but right now it would be impossible to write a game-engine that any AAA studio would use |
06:16:59 | filwit | i like the idea of having engine code and script code the same language |
06:17:32 | filwit | and there's some really great syntax i can get from Nimrod's macros for removing much of the boilerplate of connecting game-scripts to the editor |
06:18:02 | ryeguy | for AAA studios i agree, but for indies it works fine |
06:18:13 | filwit | my plan is to eventually have drag-n-drop behaviors (think Blender/Maya/Max level of editing on objects), with zero performance hit on release builds |
06:18:17 | * | DAddYE quit (Remote host closed the connection) |
06:18:19 | ryeguy | i'm not sure if nimrod would work for AAA engines though |
06:18:42 | filwit | Nimrod is basically C code, but a level above |
06:18:44 | ryeguy | the fact that it has a GC, even though it can be soft realtime, is taking up cycles |
06:18:59 | filwit | nah, i've done some initial tests |
06:19:03 | filwit | the GC is awesome |
06:19:08 | filwit | you can give it max clean times |
06:19:08 | ryeguy | i know it is |
06:19:12 | ryeguy | i know you can |
06:19:13 | filwit | and it only collects on allocation |
06:19:25 | filwit | so you can use free-lists and garentee it doesn't run |
06:19:26 | ryeguy | my point is people on consoels etc don't want to spare any cpu time at all |
06:19:32 | ryeguy | that's true |
06:19:35 | filwit | guarantee* |
06:19:48 | filwit | ryeguy: actually, that's not true anymore |
06:19:59 | fowl | --gc:none |
06:20:11 | filwit | some big company, i think it was a EA developer, came out and said that their new game engine uses GC throughout |
06:20:23 | filwit | it's a C++ codebase too, so it must suck to use |
06:20:27 | ryeguy | that's interesting |
06:21:24 | filwit | yeah, really if you can control the GC right (which you can in Nimrod) then you can design the engine to avoid and stutter and glitches |
06:21:39 | filwit | and a GC is needed for the scripts |
06:21:50 | filwit | so no matter what, you're going to be running a GC |
06:22:09 | filwit | it just doesn't make sense to spend a ton more paying developers to hunt memory leaks |
06:22:34 | fowl | lol "came out" as a GC user |
06:22:40 | filwit | avoid any** stutter... |
06:22:54 | filwit | fowl: haha, yeah |
06:22:56 | ryeguy | they have support groups for GC users |
06:23:10 | filwit | well it is pretty "taboo" for AAA game devs ATM |
06:23:33 | fowl | im my tests you have to create like 40,000 gc'd objects per frame before you see any performance hit |
06:23:44 | filwit | Remedy Games recently hinted their new engine may be using D for scripting |
06:23:58 | filwit | although Manu Evans mentioned he avoids the GC |
06:24:18 | filwit | he mentioned he may turn it back on once D's implementation is better |
06:24:47 | filwit | that's not confirmed, btw, but Manu gave a talk about it at DConf |
06:25:05 | * | ryeguy quit () |
06:25:29 | filwit | fowl: yeah, but that's cause Nimrod's GC is nice |
06:25:52 | fowl | i meant nimrod |
06:25:56 | filwit | fowl: and sometimes game-scripts aren't the best for allocation, because they're written by entry-level devs |
06:26:01 | fowl | you hit that wall way faster in something like ruby |
06:26:09 | filwit | yeah, exactly |
06:26:33 | filwit | which is why GC is so taboo for game-devs right now, cause everyone's looking at Lua as an example |
06:26:55 | filwit | or the Mono (2.6) that Unity3D uses, which is really bad GC |
06:27:24 | fowl | aint nothin wrong with lua's performance |
06:28:15 | filwit | well, i don't know much about it. but just because modern Lua may have many performance improvements, doesn't mean that other game-engines which use Lua use the latest version either |
06:28:32 | filwit | so people get a bad taste for the GC if it stutters out their game |
06:28:59 | fowl | plenty of people make games in pure lua |
06:29:04 | fowl | with love2d (though that is c++) |
06:29:27 | filwit | yeah, like i said, i don't know much about Lua |
06:29:45 | filwit | i know it's supposed to have a pretty good JIT now, which really helps performance |
06:29:55 | filwit | still... it's dynamic typing |
06:30:04 | filwit | it's really really hard to make a dynamic language fast |
06:30:26 | filwit | Google has been trying for years with V8, and look how horribly slow JS still is |
06:31:06 | filwit | and they're doing all sorts of fancy compiler tricks (turning dynamically generated objects into low-level JIT compiled structs) |
06:31:27 | * | DAddYE joined #nimrod |
06:31:37 | * | DAddYE quit (Remote host closed the connection) |
06:31:37 | filwit | i doubt Lua has that sort of engineering behind it (though it's design might make getting to the same performance marks easier) |
06:31:47 | * | DAddYE joined #nimrod |
06:34:39 | filwit | btw, fowl, on my code here: https://gist.github.com/PhilipWitte/7715941#file-gistfile1-nim-L161 |
06:34:51 | filwit | do i need to {.pop.} at the end of the file? |
06:34:56 | fowl | no |
06:35:04 | filwit | k, thanks |
06:35:17 | filwit | not that it really matters, this is just temp anyways |
06:52:47 | * | xenagi joined #nimrod |
07:43:25 | * | brson quit (Quit: leaving) |
07:48:47 | fowl | filwit, also system.`/=`[T](a: var T, b: T) should work for your vector ty |
07:54:06 | * | Jackneill joined #nimrod |
07:59:00 | filwit | fowl: there's one for +=/-=/etc in system? |
07:59:06 | filwit | will try it |
08:00:01 | filwit | hmmm... why is there only a /= ?? that seems really odd.. |
08:00:03 | fowl | well /= is for float only |
08:00:56 | filwit | i'm just going to keep the definitions |
08:01:00 | filwit | definition* |
08:01:13 | filwit | it would be much more confusing to leave out just /= |
08:01:47 | filwit | but thanks for the info |
08:13:36 | fowl | oh the rest of them are for TOrdinal only |
08:16:22 | filwit | i see |
08:30:57 | * | mflamer quit (Ping timeout: 272 seconds) |
08:31:51 | * | xenagi quit (Ping timeout: 272 seconds) |
08:52:53 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
08:57:12 | * | snuderl joined #nimrod |
09:26:44 | Araq | filwit: but Lua is much easier to optimize than JS. JS's fucked up scoping rules are the major issue afaik. |
09:27:40 | filwit | morning Araq. |
09:28:43 | filwit | I'm not sure of all the real details of optimizing JS, and I don't know much Lua at all. |
09:28:55 | Araq | and I still wonder why I should copy "def"... define what exactly? it's an absurd keyword to use |
09:29:25 | filwit | i don't like 'def' if that's worth anything, lol |
09:30:11 | filwit | i prefer your choice of 'proc', even though that was odd at first ('func' was always my "favorite" but we talked about this, and proc make just as much sense) |
09:31:33 | Araq | So we'd have "iterator", "macro", etc. and then "def". Makes no sense. ;-) |
09:32:03 | filwit | you know, it's funny but i used to hate 'method' and stuff cause they where long while 'proc' was short |
09:32:04 | filwit | lol |
09:32:45 | Araq | well the idea is to encourage static binding, so "proc" got the shortest keyword |
09:32:48 | filwit | don't worry, i think they're perfectly fine names.. just saying that was my first impression (but you know how detail-oriented i am, so that's not saying much..) |
09:33:31 | filwit | and actually, i agree. making them longer names makes them distinct, which is good because they're different |
09:33:41 | Araq | however, I think I'll have "func" to mean proc {.noSideEffect, writes: [], raises: [], tags: [].} |
09:33:58 | Araq | which means you are in pure FP wonderland |
09:34:02 | filwit | what does {.tags:[].} doe? |
09:34:05 | filwit | do* |
09:34:13 | Araq | look it up please |
09:34:24 | filwit | oh, i assumed it wasn't documented... |
09:36:21 | filwit | okay, i see. interesting. I haven't gotten into the new writes/raises/tags pragmas yet |
09:36:37 | filwit | they look nice though |
09:37:18 | Araq | the compiler really needs to start using 'tags'. It's very useful to mark procs that perform symbol table manipulations. |
09:37:49 | Araq | and it's a nice experiment if the tags-system works on a large scale |
09:38:09 | filwit | it's to help with safety, not performance right? |
09:38:39 | filwit | or for threading, like your article talked about. |
09:38:48 | filwit | nevermind, i'll just do more research into it later |
09:38:59 | filwit | i'm gunna forget anything you say right now, kinda tired |
09:41:17 | Araq | safety. you can ensure parts of your engine never ends up calling your scripting layer, for instance. |
09:41:49 | filwit | yeah, that sounds very useful. |
09:42:16 | filwit | btw, working with SIMD in Nimrod is awesome, lol |
09:44:37 | filwit | it's just nice that it doesn't take much effort to get a nice "a += b * x.shuffle(0, 2, 3, 3)" code that i know it's going to cause any odd performance penalties |
09:45:06 | filwit | i tried doing this in D awhile.. it was not nearly as nice. |
09:45:12 | filwit | awhile ago** |
09:46:14 | filwit | but half because D has it's own SIMD intrinsics for DMD.. i guess i could have tried using xmmintrin.h directly.. that might have helped |
09:46:42 | Araq | no these things don't work when you don't compile to C |
09:47:07 | filwit | yeah you're right |
09:47:11 | filwit | maybe GDC |
09:47:21 | Araq | yeah |
09:47:25 | Araq | or llvmd |
09:47:27 | filwit | but yeah, it's not near as nice of a situation |
09:48:00 | Araq | bbl |
09:48:13 | filwit | k |
10:04:41 | eigenlicht | dunno whether you guys saw it, but people on r/programming have problems viewing the slides about meta programming: https://pay.reddit.com/r/programming/comments/1rpwk4/nimrod_a_new_approach_to_meta_programming_slides/ |
10:05:43 | eigenlicht | it's sad, because it's really interesting to see a macro system similar to lisps in action, but without the s-expressions (which I like though) |
10:06:25 | filwit | i can see the slides fine.. |
10:06:30 | eigenlicht | me too |
10:06:35 | filwit | what are they using IE6 or something? |
10:06:50 | eigenlicht | tablets and stuff it seems |
10:07:18 | eigenlicht | the top comments are all about the slides, instead of the content |
10:07:21 | filwit | you should be able to swipe left/right i thought |
10:07:33 | filwit | haven't tried though |
10:07:41 | eigenlicht | it says so, but it doesn't work across different platforms/browsers according to the comments |
10:08:04 | filwit | yeah, i'm reading the comments now.. |
10:08:45 | filwit | i always opened in a new tab, so i never noticed the back-button thing.. though honestly i kinda prefer having back as "go back a slide" for a slideshow.. |
10:09:06 | filwit | either way, if people are having problems with it, it should probably be fixed |
10:09:38 | eigenlicht | didn't think to much about it, but is nimrods meta-programming equivalent to lisps in power? |
10:10:09 | eigenlicht | yeah, that's what I hoped, too. because all those people who could possibly contribute, won't because the slides don't work |
10:10:28 | * | jasonjckn quit (Remote host closed the connection) |
10:10:53 | filwit | I don't know much about Lisp, sorry |
10:11:14 | filwit | Araq should be around a little later though, and he knows |
10:11:58 | filwit | I've heard that Nimrod's macros are similar to Lisp's ability.. but really i have know idea, and don't want to spread mis-information |
10:11:59 | eigenlicht | filwit: are you working on nimrod too? or should I report the problems with the slides somewhere? |
10:12:25 | filwit | I don't have ability to fix that directly, no |
10:12:58 | filwit | make sure either Araq or dom96 knows about it. |
10:13:08 | eigenlicht | Araq == the author of the slides? |
10:13:22 | filwit | Araq == the author of Nimrod ;) |
10:13:31 | filwit | and the slides too |
10:13:46 | filwit | though it's possible someone else wrote the HTML for them or something |
10:14:09 | filwit | usually, either Araq or dom96 is responsible for the content you see on the web |
10:14:19 | * | BitPuffin joined #nimrod |
10:14:21 | eigenlicht | anyway, I'll try to make sure he gets hold of the problem. probably he will anyway once he comes online because of the pings |
10:14:25 | filwit | hi BitPuffin |
10:14:58 | filwit | eigenlicht: he was just here a minute ago actually, but said he would be back later |
10:15:03 | BitPuffin | howdy filwit |
10:15:07 | BitPuffin | dom96: you thar? |
10:15:14 | filwit | eigenlicht: thanks for the report though |
10:17:50 | eigenlicht | filwit: np |
10:23:21 | * | DAddYE quit (Remote host closed the connection) |
10:41:40 | eigenlicht | well, the guys in #lisp don't seem to be of any help either on this matter |
10:42:10 | filwit | is there a specific thing you'd like to know if Nimrod's macros can do? |
10:42:35 | * | EXetoC joined #nimrod |
10:42:43 | filwit | hi EXetoC |
10:43:02 | eigenlicht | I can see that nimrods meta programming supports the most used applications of lisps macros - but I dunno about the more special stuff, since I'm not a lisp expert either |
10:43:44 | eigenlicht | so to say, everything I've done with lisp macros yet, could have been done with nimrods meta programming too, I guess |
10:44:16 | filwit | i really can't think of anything Nimrod's macros can't do right now |
10:44:39 | filwit | there are some TypeTraits that need to be defined still, but that's not a limitation with the design |
10:45:10 | filwit | macros basically just take in arbitrary AST and return arbitrary AST |
10:45:37 | filwit | you can use the {.immediate.} pragma to ensure they run before certain type-checks, meaning you can do things like: |
10:45:53 | filwit | myMacro SomeYetToBeDefinedSymbol |
10:46:10 | EXetoC | filwit: hola |
10:48:17 | eigenlicht | the only thing one guy in #lisp said, is that nimrod is probably single dispatch, which he considered less powerful than multiple dispatch (which common lisp supports) |
10:48:32 | eigenlicht | but that's not really related to the meta programming |
10:49:09 | filwit | i'm not sure what single vs multiple dispatch is |
10:49:17 | BitPuffin | eigenlicht: you mean dynamic dispatch? |
10:49:45 | eigenlicht | I think he was refering to OOP, but I'm not sure 100% either |
10:50:09 | BitPuffin | yeah dynamic dispatch is the same |
10:50:10 | filwit | you mean single inheritance vs multiple inheritance |
10:50:30 | eigenlicht | filwit: nope, that's something very different. looking for a good link... |
10:50:46 | filwit | okay |
10:50:54 | BitPuffin | eigenlicht: http://build.nimrod-lang.org/docs/manual.html#multi-methods |
10:51:29 | eigenlicht | BitPuffin: afaik dynamic dispatch != multiple dispatch |
10:52:02 | BitPuffin | eigenlicht: well I read the wikipedia article about multiple dispatch and it seemed to describe dynamic dispatch |
10:52:09 | BitPuffin | eigenlicht: I could be wrong |
10:54:32 | BitPuffin | ah no they are not the same |
10:54:38 | eigenlicht | BitPuffin: this article describes single and multiple dispatch, and at the top of the article you find the description to dynamic dispatch: https://en.wikipedia.org/wiki/Dynamic_dispatch#Single_and_multiple_dispatch |
10:55:03 | eigenlicht | the result may be similar (that the operation is not defined at compile time), but it's a different approach though |
10:55:23 | BitPuffin | ar are they? |
10:55:43 | filwit | technically multiple dispatch would be possible.. manually.. through macros |
10:56:21 | eigenlicht | I don't think it's possible to have both, mutltiple and single dispatch, fully supported in one class system |
10:56:34 | filwit | meaning you could define a macro, which in terms builds a type of multiple objects (your own OOP), then you make a proc which chooses, based on it's multiple types, which proc to really call |
10:56:53 | filwit | in turn** builds... |
10:57:11 | eigenlicht | that would be somewhat like your very own class system then |
10:57:21 | filwit | exactly |
10:57:35 | filwit | which you can do in Nimrod, but yeah, not built-in |
10:57:55 | filwit | then again, don't take my word for it, it's possible there's some Nimrod feature i'm unaware of |
10:58:01 | BitPuffin | yeah same here |
10:58:05 | BitPuffin | I don't know if we have it |
10:58:20 | BitPuffin | I can barely wrap my head around what dispatch is |
10:58:27 | BitPuffin | nah I know what it is but still |
10:58:27 | filwit | but i doubt it, since Nimrod's type system doesn't (yet) have multiple inheritance... so that wouldn't make sense |
10:58:29 | BitPuffin | xD |
10:58:32 | eigenlicht | anyway, I'm not that much interested in whether the class system/OOP - it's about the meta programming :P |
10:58:41 | BitPuffin | eigenlicht: exactly |
10:58:48 | BitPuffin | the oop is kept simple for a reason |
10:58:54 | BitPuffin | we don't have protected for example |
10:59:04 | BitPuffin | some will argue that that is not as powerful |
10:59:27 | eigenlicht | filwit: it's has nothing to do with multiple inheritance iirc correcly. the difference is just that in single dispatch oop, the object is the central type |
10:59:37 | eigenlicht | in multiple dispatch, the function is the central type |
10:59:49 | BitPuffin | the parameters seem to be the central types |
10:59:52 | BitPuffin | or something like that |
11:00:38 | filwit | eigenlicht: according to your linked article, it sounds like multi-dispatch means one function is called based on the account of all of it's inherited types |
11:00:57 | eigenlicht | maybe I expressed it poorly...in single dispatch OOP the first thing you do is define a class is some way. in multiple dispatch, or at least in common lisp, the first thing you do is define the method |
11:01:26 | filwit | ahh, this is generic programming in Nimrod |
11:01:30 | eigenlicht | and based on the argument, the corresponding method is called |
11:01:36 | BitPuffin | yeah |
11:01:39 | BitPuffin | what filwit said |
11:01:41 | filwit | proc foo[T](bar:T) |
11:01:47 | filwit | where T can be multiple types |
11:02:04 | BitPuffin | it's instantiated for every type it is called with |
11:02:11 | filwit | in Nimrod, you can even do this: type Foo = object or tuple; proc bar(baz: Foo) |
11:02:32 | eigenlicht | it's more than just function overloading/using generics |
11:02:49 | BitPuffin | eigenlicht: remember that lisp is dynamically typed (unless you go out of your way to declare what type something should be) so without generics it would not be possible |
11:03:02 | BitPuffin | in nimrod |
11:03:22 | BitPuffin | filwit: I didn't know that :o |
11:03:24 | eigenlicht | yeah, but just because you have generics, doesn't mean you support multiple dispatch OOP |
11:03:51 | BitPuffin | but how could we declare method first if we didn't have generics? |
11:03:55 | filwit | eigenlicht: okay, well i'm too unfamiliar with this domain to comment really. You'll have to ask Araq, he should know more. |
11:03:56 | eigenlicht | look at this for example: https://en.wikipedia.org/wiki/Multiple_dispatch#Common_Lisp |
11:04:14 | BitPuffin | to the pedia! |
11:04:19 | EXetoC | filwit: 'or' == '|'? |
11:04:26 | EXetoC | seems like it |
11:04:51 | EXetoC | according to that example anyway, but I haven't encountered that yet |
11:05:05 | BitPuffin | EXetoC: or is both | and || |
11:05:11 | BitPuffin | depending on the context |
11:05:18 | filwit | EXetoC: nah, it's 'or' according to the docs |
11:05:43 | eigenlicht | so am I in fact, not that much into OOP. just learnt the single dispatch stuff from C#/java, etc. and the multiple dispatch along with common lisp back then, and I remember thinking that it's an interesting approach (for function languages) |
11:05:47 | eigenlicht | functional* |
11:05:49 | filwit | eigenlicht: i don't understand.. that looks like common overloading.. what am i missing? |
11:05:50 | BitPuffin | wel BLABLU | BLEBLA is BLABLU or BLEBLA in nimrod |
11:05:50 | EXetoC | filwit: so "TSignedInt* = int|int8|int16|int32|int64" is different? |
11:06:40 | BitPuffin | ohh |
11:06:44 | BitPuffin | you are talking about that |
11:06:48 | eigenlicht | filwit: let me check, I gotta re-understand that first myself |
11:06:50 | filwit | EXetoC: i have no idea.. maybe it's just the same syntax. I just learned about the 'or' myself |
11:07:59 | BitPuffin | http://build.nimrod-lang.org/docs/manual.html#user-defined-type-classes |
11:08:04 | BitPuffin | EXetoC: ^ uses or |
11:08:39 | BitPuffin | actually it doesn't use either |
11:08:54 | eigenlicht | filwit: maybe this explains it a bit better: https://en.wikipedia.org/wiki/Generic_function |
11:09:06 | EXetoC | BitPuffin: right :p |
11:10:58 | filwit | eigenlicht: as far as i can tell, that looks like regular generic procs.. but i don't know enough about Lisp to really tell for sure |
11:11:25 | filwit | eigenlicht: plus, i live in the US and have been up all night.. so i'm kinda tired right now and can't think the best |
11:11:31 | eigenlicht | filwit: it seems to me too like normal function overloading right now, but I'm sure there is more to this |
11:12:30 | filwit | eigenlicht: it sounds like a fancy name for generic functions with type restraints |
11:13:25 | filwit | proc collide[T:Astroid|Ship](o:T) |
11:13:35 | filwit | but again, can't be sure |
11:13:36 | BitPuffin | with sets, does the subset thing mean that for example A < B only contains some of B's elements but not all and no other? |
11:17:55 | EXetoC | filwit: that's also a type class, so I guess you're using both '|' and 'or' then :p |
11:18:49 | filwit | EXetoC: yeah, i'm not really sure of the difference when used with type declarations |
11:18:52 | EXetoC | except you're taking a shortcut by not defining it in a type block |
11:19:18 | filwit | oh i see what you where talking about |
11:19:19 | EXetoC | filwit: can't think of any |
11:19:40 | filwit | yeah, i was just using and example from the Lisp links |
11:22:51 | BitPuffin | By the way it would be really cool to hake some way to have a way to specify things that should happen once things are inherited for example |
11:23:17 | BitPuffin | so that if one were to write an ORM |
11:23:28 | BitPuffin | if you inherited some base table type |
11:23:37 | BitPuffin | it would create procs for creating things |
11:24:02 | BitPuffin | so type Foo = object of TTable |
11:24:12 | BitPuffin | would give me insertFoo etc |
11:24:17 | BitPuffin | findFoo |
11:24:26 | * | DAddYE joined #nimrod |
11:25:16 | filwit | BitPuffin: that's what generics are for |
11:26:06 | BitPuffin | filwit: I think you missed the point |
11:26:06 | filwit | or wait.. nevermind.. i don't understand what you're saying |
11:26:16 | EXetoC | BitPuffin: the manual seems to imply that. I'm not sure how < and <= could differ otherwise |
11:26:30 | BitPuffin | it's so that new procs are generated with the type name |
11:26:32 | EXetoC | testing it gives me an ICE though |
11:26:37 | BitPuffin | this is just an example on what we could do wit h it |
11:26:47 | filwit | BitPuffin: what do the new procs do? |
11:27:04 | BitPuffin | EXetoC: well < would be false if they were the same I think |
11:27:11 | BitPuffin | or oh |
11:27:15 | BitPuffin | nevermind |
11:27:15 | filwit | BitPuffin: any type derived of some other type should work with that other types procs.. |
11:27:27 | EXetoC | BitPuffin: yes |
11:27:44 | BitPuffin | filwit: it basically does generic things just that the name would be part of the proc |
11:28:00 | eigenlicht | filwit: just in case you're curious: http://www.gigamonkeys.com/book/object-reorientation-generic-functions.html |
11:28:25 | eigenlicht | this explains why generic functions are much, much more powerful than simple function overloading |
11:28:36 | eigenlicht | (especially paragraph "Method Combination" and below) |
11:28:53 | BitPuffin | filwit: indeed, but I'm thinking of things like in rails for example |
11:29:10 | filwit | eigenlicht: thanks, i'll take a look at it later.. no way i'm reading all that right now though |
11:29:12 | * | DAddYE quit (Ping timeout: 260 seconds) |
11:29:22 | BitPuffin | it's a bad example but my point is, it would be nice to have some hook to do operations when something is inherited |
11:29:25 | BitPuffin | or included |
11:29:30 | BitPuffin | etc |
11:29:48 | eigenlicht | filwit: yeah, sure. as I said, if you already know what a generic function and a method in this context is, you can start right away from "method combination" |
11:30:04 | eigenlicht | not that hard to grasp imo (at least when you#re fully awake ;)) |
11:30:11 | filwit | BitPuffin: okay, well i'm not sure what you're after. IDK about Rails at all. but i'm too tired to think about his much |
11:30:55 | filwit | well i'm taking off for a few hours. later folks |
11:31:02 | * | filwit quit (Quit: Leaving) |
11:34:04 | EXetoC | BitPuffin: A is a proper/strict subset if it's a subset but not equal to B, and the Nimrod manual uses the term 'strong subset' when describing '<'. so yeah, probably the same thing |
11:35:31 | EXetoC | so there are several set operations that don't work. gotta report this |
11:37:26 | BitPuffin | EXetoC: yeah do report |
11:37:47 | EXetoC | I think I was going to report something else too about a week ago. wth was that? :p |
11:37:55 | BitPuffin | Araq: is it a know issue that you get a type error when you do var f: TIMat2 = <array constructor>? |
11:52:10 | BitPuffin | Hmm |
11:52:24 | BitPuffin | should I call matrix minor "min" or minor ? |
11:52:27 | BitPuffin | or should I even have it |
11:52:44 | BitPuffin | you can really just do det(m{12}) anyway |
11:53:06 | BitPuffin | that's what it looks like in math |
11:53:09 | BitPuffin | so maybe that's even better |
11:54:34 | BitPuffin | or wait a second |
11:54:38 | BitPuffin | {} is not submatrix |
11:54:39 | EXetoC | minor is short enough already |
11:54:42 | BitPuffin | {} is minor |
11:55:13 | BitPuffin | time to refactor! |
11:55:26 | BitPuffin | should I call submatrix "subMatrix" or "sub" ? |
12:02:16 | * | gsp joined #nimrod |
12:06:24 | BitPuffin | I went with sub |
12:07:01 | gsp | Hi guys! I was just playing around with the pegs module. What's the proper way of doing more than "MaxSubpatterns" captures? Setting up two grammars and matching the substructures separately seems silly. |
12:13:07 | BitPuffin | gsp: no idea |
12:26:12 | * | DAddYE joined #nimrod |
12:29:43 | EXetoC | gsp: how are you running into this limitation? is your grammar complex? |
12:30:14 | * | DAddYE quit (Ping timeout: 240 seconds) |
12:30:21 | EXetoC | I think it was an issue for me because I specified a repetition on a capture group, rather than inside one |
12:31:48 | EXetoC | but I don't know what to do in case of a grammar that has too many captures. |
12:32:05 | EXetoC | or maybe I just don't know how to use pegs properly |
12:32:05 | BitPuffin | fuck {} was the submatrix |
12:32:31 | EXetoC | gsp: Araq should know, but I don't know when he'll be around |
12:33:35 | * | datura joined #nimrod |
12:34:07 | datura | wow.. 44 online is more than i expected. |
12:39:11 | gsp | EXetoC: ok, thanks! What I'm doing is matching elements for a specific set notation, where each element also has some parameters. Even if I'm going to match the parameters separately, there's still the possibility, that the set contains more than 10 elements. |
12:44:06 | BitPuffin | no {} is the minor |
12:44:09 | BitPuffin | fucking balls |
12:49:45 | EXetoC | datura: yeah? hi |
12:49:55 | EXetoC | gsp: ok |
12:50:12 | EXetoC | BitPuffin: are you sure this time? :p |
12:51:13 | BitPuffin | EXetoC: yes xD |
12:51:27 | BitPuffin | datura: actually we've been up to around 60 iirc |
12:52:34 | * | q66 quit (Quit: Leaving) |
12:53:58 | * | q66 joined #nimrod |
12:54:24 | datura | looks like nimrod is a bit further along the way than scala was when i joined that channel, but i've seen much more written about scala back then than i've seen written about nimrod. |
12:54:54 | datura | looks like i'm a bit late to take notice of this language :) |
12:56:00 | * | q66_ joined #nimrod |
12:56:17 | BitPuffin | datura: most people are :P |
12:56:20 | * | q66 quit (Read error: Connection reset by peer) |
12:58:11 | BitPuffin | uh |
12:58:20 | BitPuffin | does nimrod have a ^ operator can't remember |
12:58:55 | BitPuffin | no math.pow |
13:00:55 | * | q66_ quit (Quit: Leaving) |
13:01:10 | * | q66 joined #nimrod |
13:10:37 | EXetoC | "indentation with tabs outlawed. WTF? I do not want to hit my spacebar eight times for every indentation-level." notepad <3 |
13:12:11 | BitPuffin | EXetoC: lol, some programmer right there |
13:21:55 | * | datura quit (Ping timeout: 272 seconds) |
13:25:47 | BitPuffin | Araq: what does one do in this case? Error: ambiguous call; both matrix.det(m: TMatrix[T, N, N]): T and matrix.det(m: TMatrix[T, range 0..1(int), range 0..1(int)]): T match for: (TMatrix[int, range 0..1(int), range 0..1(int)]) |
13:26:39 | BitPuffin | by the way guys determinants for NxN matrices are now implemented :D but it doesn't work because compiler bugs |
13:27:34 | * | DAddYE joined #nimrod |
13:28:07 | dom96 | BitPuffin: I'm here now. |
13:31:50 | BitPuffin | howdy dom96! |
13:31:50 | * | DAddYE quit (Ping timeout: 240 seconds) |
13:32:03 | BitPuffin | dom96: how are you? |
13:32:04 | dom96 | I'm not hiding from you btw. |
13:32:13 | BitPuffin | haha no I know it was a joke :) |
13:35:03 | dom96 | Did you get the cookies working? |
13:35:29 | * | boydgreenfield joined #nimrod |
13:36:13 | BitPuffin | dom96: no, I wanted you to try if you could reproduce something |
13:36:35 | dom96 | ok, what. |
13:36:38 | dom96 | ? |
13:36:46 | BitPuffin | dom96: I tried to just make a post that simply sets a cookie and redirects, same issue |
13:37:02 | dom96 | can you gist your code? |
13:37:37 | BitPuffin | sure thing |
13:40:51 | BitPuffin | dom96: actually I removed that code since I saw that the issue was the same, but I'll write it by hand in a gist |
13:40:56 | BitPuffin | I remember exactly what it was |
13:41:03 | dom96 | thanks |
13:41:31 | BitPuffin | or I'll even write one you can run |
13:41:43 | dom96 | yeah, that's better. |
13:42:03 | BitPuffin | is it request.cookie or cookies |
13:43:55 | * | boydgreenfield quit (Quit: boydgreenfield) |
13:44:06 | dom96 | cookies I think |
13:44:20 | * | dom96 really needs to get nimbuild to build babel package docs |
13:48:00 | BitPuffin | hmm wtf |
13:48:04 | BitPuffin | now it works as expected |
13:48:09 | BitPuffin | is it fighting with persona or what |
13:49:21 | eigenlicht | dom96: filwit said either you or araq should know of the problems with the slides on nimrods meta programming |
13:49:28 | eigenlicht | see here: https://pay.reddit.com/r/programming/comments/1rpwk4/nimrod_a_new_approach_to_meta_programming_slides/ |
13:50:54 | eigenlicht | I guess quick fix would be providing a pdf, since honestly, the web is so broken |
13:51:20 | dom96 | Yeah, thanks for the heads up. They're Araq's slides though so I can't really do much, maybe I can update the JS or something. |
13:52:00 | eigenlicht | I consider my job of reporting this as done then |
13:53:26 | dom96 | http://www.w3.org/Talks/Tools/Slidy2 doesn't work on my phone either, so they would have to fix it. |
13:55:29 | dom96 | or we could hack their JS and get it to work. |
13:55:42 | dom96 | But I have no idea how this slide to left stuff works. |
13:55:50 | BitPuffin | dom96: or write an alternative in nimrod! |
13:56:00 | BitPuffin | dom96: by the way linagl just became more awesome |
13:56:05 | BitPuffin | in case you missed |
13:56:11 | dom96 | oh? how? |
13:57:48 | BitPuffin | dom96: the matrix implementation is becoming complete, there is an implementation of n*n matrices too but that doesn't make the compiler happy because I've hardcoded determinants for 2x2 and 3x3 because I had to hardcode submatrices for 2x2, 3x3, and 4x4 because of compiler bugs |
13:57:57 | BitPuffin | yes I am indeed working around my workarounds |
13:58:12 | dom96 | lol, sounds fun |
13:58:30 | BitPuffin | it's pushed |
13:58:39 | BitPuffin | hmm what else before I start adding the 3d stuff |
13:59:17 | BitPuffin | right |
13:59:21 | BitPuffin | inverse and adjoint |
13:59:43 | BitPuffin | orthogonalizing |
14:00:51 | BitPuffin | dom96: by the way since I have to delay my blog, one option to get an article up this weekend would be if I guest posted on your (or someone else's) blog |
14:02:02 | dom96 | sure. But my blog doesn't really have a concept of 'author', it's all me heh. Will have to figure out how to get your name in there somehow. |
14:03:28 | BitPuffin | dom96: well we could just open the post with something like "This is a guest post by Isak Andersson from www.bitpuffin.com" |
14:03:52 | dom96 | sure |
14:04:09 | dom96 | what do you want to write about? |
14:04:15 | BitPuffin | dom96: linagl |
14:05:02 | dom96 | ok |
14:09:40 | BitPuffin | matrix diagonal, trace, eigenvalue, eigenvector too |
14:09:44 | BitPuffin | then I'll add some 3d stuff |
14:09:51 | BitPuffin | and then I can release linagl 0.2.0 :D |
14:10:29 | BitPuffin | or maybe I'll release 0.2.0 with just the complete matrix math stuff |
14:10:40 | BitPuffin | and then add 3d stuff |
14:10:42 | BitPuffin | 0.3.0 |
14:10:51 | BitPuffin | quaternions 0.4.0 |
14:11:06 | BitPuffin | exponential maps, euler angles etc 0.5.0 |
14:11:42 | BitPuffin | geometric primitives 0.6.0 |
14:11:49 | BitPuffin | curves 0.7.0 etc etc etc |
14:12:11 | BitPuffin | dom96: thoughts? xD |
14:12:31 | * | dom96 has no idea what most of those things are |
14:12:34 | BitPuffin | I'm gonna add the 3d stuff today anyway unless I encounter severe bugs |
14:17:00 | eigenlicht | BitPuffin: studying CS? sounds pretty much like our syllabus in linear algebra |
14:17:31 | BitPuffin | eigenlicht: I self study |
14:17:52 | BitPuffin | computer graphics thingies |
14:18:05 | BitPuffin | eigenlicht: and yes, linagl is a linear algebra lib :P |
14:18:25 | BitPuffin | with some 3d flavors sprinkled on it |
14:18:40 | BitPuffin | but it is not limited to 3d graphics use |
14:18:59 | BitPuffin | hence the support for arbitrary matrices |
14:19:40 | eigenlicht | implemented gauss algorithm? our prof just loves this one |
14:20:01 | BitPuffin | eigenlicht: nope not yet, currently focusing on making matrices complete |
14:23:02 | BitPuffin | eigenlicht: https://bitbucket.org/BitPuffin/linagl if you are interested in looking at what's currently in there :) |
14:25:45 | eigenlicht | oh, remember looking at it before |
14:25:59 | BitPuffin | eigenlicht: I just pushed some goodies |
14:28:19 | BitPuffin | eigenlicht: and since you are in linear algebra class it would be nice if you verified that my understanding of minors and cofactors and determinants are correct |
14:28:27 | BitPuffin | s/are/is/ |
14:29:03 | NimBot | nimrod-code/babel master 87008ed Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds didUpdatePackages global to detect downloads. |
14:29:03 | NimBot | nimrod-code/babel master 58ee3a5 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds some temporary masks to gitignore. |
14:29:03 | NimBot | nimrod-code/babel master e08f910 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds update suggestion to failed install commands.... 3 more lines |
14:29:03 | NimBot | nimrod-code/babel master d2ff131 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds -y/-n switches for non interactive operation. |
14:29:03 | NimBot | 3 more commits. |
14:29:40 | * | BitPuffin does babel install babel |
14:30:27 | dom96 | :) |
14:30:27 | BitPuffin | babel install babel install babel install babel install babel install babel install babel install babel install babel |
14:30:49 | BitPuffin | dom96: living on the edge wooh! |
14:32:22 | eigenlicht | BitPuffin: I'm sorry, it has been some time. also, iirc we barely talked about determinants |
14:32:41 | BitPuffin | eigenlicht: ah that's lame |
14:32:57 | BitPuffin | well at least it can be a good refresher if you look at it and hope I'm right |
14:33:00 | BitPuffin | I think I'm correct at least |
14:36:47 | NimBot | nimrod-code/babel master 4e2a51b Grzegorz Adam Hankiewicz [+0 ±2 -0]: Adds method to split and strip input config files.... 3 more lines |
14:36:47 | NimBot | nimrod-code/babel master 12918f4 Grzegorz Adam Hankiewicz [+0 ±2 -0]: Modifies multiSplit to strip commas too.... 2 more lines |
14:36:47 | NimBot | nimrod-code/babel master 9409b6e Dominik Picheta [+0 ±3 -0]: Merge branch 'pr_fix_multiline_config_files' of git://github.com/gradha/babel into gradha-pr_fix_multiline_config_files... 3 more lines |
14:40:34 | dom96 | ooh, Nimrod is #25 https://github.com/trending |
14:45:28 | BitPuffin | dom96: awesome, that's hard to believe actually |
14:45:50 | BitPuffin | dom96: now we just have to make jester beat martini |
14:45:54 | dom96 | Yeah. |
14:46:06 | * | OrionPKM joined #nimrod |
14:49:51 | * | zielmicha joined #nimrod |
14:50:06 | dom96 | hello zielmicha |
14:50:16 | zielmicha | hey |
14:52:27 | * | gradha joined #nimrod |
14:53:04 | BitPuffin | zielmicha: are you new here? |
14:53:42 | zielmicha | yes, I read about nimrod yesterday |
14:53:52 | BitPuffin | zielmicha: welcome! |
14:53:58 | BitPuffin | zielmicha: how did you find it? |
14:55:36 | zielmicha | I think that I found it mentioned on Reddit. |
14:56:05 | BitPuffin | cool, well I hope you enjoy using nimrod! Don't be afraid to ask if you need help with anything :D |
14:56:34 | EXetoC | dom96: you think we'll be #1 soon? |
14:56:40 | EXetoC | some time in 2014 perhaps |
14:56:53 | dom96 | We might be once the strangeloop talk gets released |
14:57:08 | BitPuffin | dom96: and don't forget about the dobbs article |
14:57:21 | dom96 | indeed |
14:57:32 | BitPuffin | and the linagl blog post xD |
15:00:32 | * | Jackneilll joined #nimrod |
15:00:36 | * | Jackneill quit (Read error: Connection reset by peer) |
15:02:40 | BitPuffin | dom96: damn it there are some warts in the compiler that will make linagl look really inconvenient :/ |
15:02:54 | dom96 | :\ |
15:03:07 | BitPuffin | for example var a = [[20,30], [489, 1]].TIMat2 won't work |
15:03:32 | BitPuffin | even though it should |
15:03:53 | EXetoC | ctors? |
15:04:21 | BitPuffin | EXetoC: yeah but not really |
15:05:03 | BitPuffin | I'd have to pass in typedesc |
15:05:07 | BitPuffin | that would be ugly too |
15:06:06 | BitPuffin | var m = initMatrix(TIMat2, [[2,8],[49,83]]) |
15:06:19 | BitPuffin | no thanks |
15:07:18 | BitPuffin | I personally think that the ultimate syntax would be something like var m = TIMat2[[84, 4], [48, 8]] |
15:07:20 | EXetoC | one ctor per common type then |
15:07:36 | BitPuffin | but that causes internal compiler error |
15:07:52 | gradha | dom96: the lack of babel versioning may be a support headache if people (aka me) start using multiline parameters in babel files and users (hah!) install that with an older babel… but old and new are both 0.1.0 |
15:08:04 | BitPuffin | oh hey gradha |
15:08:08 | gradha | yo BitPuffin |
15:08:17 | BitPuffin | didn't see you come it |
15:08:18 | dom96 | gradha: I may release 0.1.0 today |
15:08:19 | BitPuffin | in |
15:08:21 | BitPuffin | * |
15:08:29 | gradha | BitPuffin: no worries, I'm just a ninja badger |
15:08:42 | dom96 | For now assume people are bleeding edge :P |
15:08:50 | dom96 | And it's easy to update anyway |
15:09:04 | BitPuffin | gradha and the badgers |
15:09:07 | BitPuffin | sounds like a good band name |
15:09:22 | BitPuffin | where is Araq anyway |
15:09:34 | BitPuffin | or zahary1 / zahary_ |
15:09:40 | BitPuffin | someone who hacks the comajler |
15:09:43 | BitPuffin | compajler |
15:09:53 | BitPuffin | Or Varriount or someone |
15:10:00 | BitPuffin | aka the gods |
15:10:19 | BitPuffin | We need to coordinate the article thingy |
15:11:24 | dom96 | I'm here! I guess you don't consider me a god? :( |
15:12:06 | gradha | gods don't tend to have physics exams, they MAKE physics work like they want to |
15:13:08 | BitPuffin | because I really don't want to publish an article filled with examples like var m: TMatrix[float32, range[0..2], range[0..2] = [[399329.0f32, 488.37f32, 84.04f32], [48.0f32, 8.0f32, 888.0f32], [0.0f32, 8.9f32, 848.0f32]] |
15:13:17 | BitPuffin | that's gonna hurt nimrod more than it helps |
15:13:28 | BitPuffin | that's not even an exaggeration |
15:13:31 | gradha | BitPuffin: on the bright sight you might capture crypto nerds |
15:13:32 | BitPuffin | that's what you gotta do atm |
15:13:53 | BitPuffin | dom96: well aren't you more of an stdlib guy than internal compiler guy? :o |
15:14:08 | BitPuffin | dom96: by the way if the jester post thing wouldn't have worked you would actually have gotten a compliment |
15:14:37 | dom96 | So only compiler guys deserve to be a god? |
15:15:00 | BitPuffin | dom96: cuz look at ze code https://gist.github.com/BitPuffin/d8bd4a4678ce355275b1 |
15:15:12 | BitPuffin | dom96: Well who do you pray to whon you need compiler bugs fixed? |
15:15:53 | gradha | BitPuffin: that's too monoteistic, maybe dom96 is a lesser god, but still a god? |
15:16:03 | BitPuffin | he's a saint maybe |
15:16:08 | dom96 | I assist the Gods. |
15:16:09 | BitPuffin | or an angel |
15:16:10 | dom96 | I'm Jesus |
15:16:12 | dom96 | or something |
15:16:19 | BitPuffin | dom96 is dead ;_; |
15:16:32 | BitPuffin | dom96: An imp? |
15:16:40 | * | dom96 should read the bible |
15:16:40 | gradha | dom96: was offline for three days, and has come today as a zombie to tell us of the future |
15:17:01 | BitPuffin | why the hell should you read the bible |
15:17:37 | dom96 | So that I know what to call myself |
15:17:47 | BitPuffin | a christian? |
15:18:02 | dom96 | no, I mean what character out of the bible to call myself :P |
15:18:11 | BitPuffin | yeah, I'm just pulling your leg |
15:18:17 | BitPuffin | dom96, fix the bug, become a god |
15:18:33 | BitPuffin | Dominik vs Goliath or something |
15:18:34 | gradha | may be quicker to read babel's wikipedia entry |
15:19:39 | BitPuffin | dom96: by the way, why not make babel build nimrod |
15:19:59 | BitPuffin | then we wouldn't need fucking aur |
15:20:47 | BitPuffin | that redownloads the full repo again and again, I currently use cower when I wanna update nimrod, but I still can't do pacaur -Syu --devel because that shits and wants to update nimrod-git |
15:20:48 | dom96 | That would mean I would need to give babel support for custom build scripts. |
15:21:21 | BitPuffin | and? |
15:21:51 | dom96 | And there are more important things to be done. |
15:22:08 | BitPuffin | so put it on the fjutjur list |
15:22:24 | BitPuffin | dom96: and fix the bug, become ze god |
15:22:39 | * | dyu joined #nimrod |
15:22:47 | * | gsp quit (Ping timeout: 246 seconds) |
15:23:05 | dom96 | BitPuffin: Make an issue @ github then |
15:23:10 | gradha | I've been thinking about babel importing nakefiles and "detecting" standard named procs like build, install, preconf/postconf, and stuff like that, similar to some linux distros |
15:23:25 | BitPuffin | dom96: and have this song looping while doing it http://youtu.be/Eq3CuMDXaPs |
15:24:47 | BitPuffin | oh I'll post issues |
15:24:50 | BitPuffin | so many issues |
15:24:54 | BitPuffin | D:<!!! |
15:26:19 | NimBot | nimrod-code/babel master b1358d7 Dominik Picheta [+0 ±1 -0]: Raise EBabel exception instead of calling quit(). |
15:26:19 | NimBot | nimrod-code/babel master 94df44e Dominik Picheta [+0 ±1 -0]: Fixes #16 |
15:26:19 | NimBot | nimrod-code/babel master 0e8c581 Dominik Picheta [+0 ±1 -0]: Fixes #17 |
15:26:59 | dom96 | Now I should really eat breakfast hah |
15:27:49 | BitPuffin | dom96: a bit late? :P |
15:29:12 | dyu | good to see nimrod on hn front page again |
15:29:27 | dyu | this time, there are lots of comments (good ones) |
15:31:09 | BitPuffin | dyu: old news :P |
15:31:37 | dyu | yea well, I've resorted to reading hn only on weekends |
15:31:59 | BitPuffin | dyu: yeah, I don't read HN at all haha |
15:33:38 | dyu | BitPuffin: good for you! And don't plan on doing it daily just in case |
15:36:24 | BitPuffin | dom96: it's a 6 month old issue posted by EXetoC already |
15:36:26 | BitPuffin | at least part of it |
15:36:46 | BitPuffin | ping zahary1 zahary_ |
15:36:51 | BitPuffin | https://github.com/Araq/Nimrod/issues/517 |
15:38:49 | BitPuffin | that's one part of the problem |
15:38:59 | BitPuffin | but that doesn't even do really what have |
15:39:15 | BitPuffin | the gods have abandoned us :( |
15:40:50 | gradha | the gods are playing "plants vs zombies" |
15:42:53 | BitPuffin | how do you know? |
15:43:36 | * | gradha sometimes hears whispers |
15:44:01 | BitPuffin | creepy |
15:46:13 | dom96 | cool. Comet ISON survived apparently. |
16:26:59 | * | betawaffle joined #nimrod |
16:31:37 | * | DAddYE joined #nimrod |
16:36:44 | * | DAddYE quit (Ping timeout: 272 seconds) |
16:37:28 | BitPuffin | what's a good way to model (-1)^ij in code |
16:37:30 | BitPuffin | ? |
16:37:48 | BitPuffin | I tried: if therow + thecol mod 2 == 0: m.minor(therow, thecol) else: -m.minor(therow, thecol) |
16:37:53 | BitPuffin | but realized that it was rong |
16:37:55 | BitPuffin | wrong |
16:38:12 | BitPuffin | because it won't work as it should in 3, 3 for example |
16:39:53 | BitPuffin | the pow function is useless in nimrod because it only works on floats |
16:45:43 | EXetoC | just extend the interface |
16:47:05 | BitPuffin | EXetoC: but I don't know how to implement power of lol |
16:47:37 | BitPuffin | or well I do |
16:47:40 | BitPuffin | haha |
16:47:45 | BitPuffin | not that hard now that I think of it |
16:47:54 | BitPuffin | well at least for positive numbers |
16:49:37 | BitPuffin | but honestly there has to be a way to know the result of (-1)^n without having to multiply -1 by itself n times |
16:50:01 | BitPuffin | and relate that to ij |
16:50:03 | BitPuffin | hmm |
17:05:00 | * | mflamer joined #nimrod |
17:07:46 | EXetoC | BitPuffin: http://www.programminglogic.com/fast-exponentiation-algorithms/ ? |
17:08:08 | * | ics joined #nimrod |
17:08:17 | * | IrvMG joined #nimrod |
17:08:36 | IrvMG | Hello |
17:08:43 | gradha | welcome IrvMG |
17:10:16 | IrvMG | command "log" for nimrod? |
17:10:52 | gradha | can you ellaborate what that means? |
17:12:04 | BitPuffin | IrvMG: are you looking for "echo" ? |
17:13:02 | IrvMG | equivalent to "console.log" from javascript |
17:13:13 | mflamer | Araq: I have the backend creating seperate strucs for each variant now but am stuck on what to do with this table. Seems like alot of things depend on procs like CacheGetType(m.forwTypeCache, t). |
17:13:36 | BitPuffin | EXetoC: remind me to do that later |
17:13:36 | mflamer | but, I cant reslly put each variant in there |
17:13:44 | mflamer | really* |
17:13:50 | gradha | IrvMG: likely echo is what you are looking, though devel/logging.nim provides a more serious logger |
17:13:53 | BitPuffin | EXetoC: right now I'm using my shitty variant |
17:14:20 | BitPuffin | console.log is not a serious logger |
17:14:24 | BitPuffin | so he's looking for echo |
17:15:10 | IrvMG | devel/logging.nim okay |
17:15:12 | gradha | maybe, after all, echo is the first line of code you find in the tutorial |
17:15:43 | * | Zuchto joined #nimrod |
17:15:51 | BitPuffin | IrvMG: if you don't need logging levels, just use echo |
17:22:47 | betawaffle | Araq: do you have anything that talks about your future concurrency plans? |
17:26:23 | dom96 | betawaffle: Here is an article by Araq related to concurrency which you may find interesting: http://nimrod-lang.org/blog/writetracking.html |
17:26:48 | betawaffle | thanks dom96 |
17:30:55 | IrvMG | socket.getDomain() ? |
17:32:11 | * | petrus joined #nimrod |
17:32:52 | dom96 | hello Zuchto and petrus. |
17:32:57 | * | DAddYE joined #nimrod |
17:33:14 | dom96 | IrvMG: I'm not sure what you're asking exactly. |
17:33:45 | IrvMG | domain name for socket tcp |
17:34:13 | dom96 | http://build.nimrod-lang.org/docs/sockets.html |
17:34:26 | brihat | I wrote my first ever Nimrod program for related to Collatz conjecture: https://news.ycombinator.com/item?id=6823746 |
17:34:43 | brihat | Would be happy if you guys tell me how to speed it up |
17:35:39 | BitPuffin | is there a way to print floats in non exp form? |
17:35:53 | * | IrvMG quit (Remote host closed the connection) |
17:37:02 | * | DAddYE quit (Ping timeout: 240 seconds) |
17:37:47 | gradha | BitPuffin: there's a format for floats |
17:38:08 | gradha | strutils. formatFloat |
17:39:17 | BitPuffin | gradha: well it's not that important haha :P |
17:39:18 | betawaffle | this is great |
17:40:40 | BitPuffin | gradha: I wasn't sure why I was printing anyway |
17:40:44 | BitPuffin | when I can just test |
17:40:46 | BitPuffin | >.< |
17:41:08 | gradha | BitPuffin: you can convert everything to a string and compare ascii then |
17:41:25 | BitPuffin | gradha: :P |
17:41:32 | BitPuffin | that would work too |
17:41:48 | gradha | brihat: I took the C example but it segfaults |
17:41:51 | * | petrus quit (Ping timeout: 245 seconds) |
17:42:18 | gradha | ah, you embedded the params, that's why |
17:42:55 | brihat | yea, just call it like ./collatz 1000000 |
17:43:14 | dom96 | brihat: You compiled with -d:release right? |
17:43:25 | brihat | i didn't know how to pass command line args with nimrod yet :P |
17:43:32 | brihat | dom96: yea |
17:43:52 | Araq | paramStr(i) or the disliked parseopt module, brihat |
17:44:07 | dom96 | Good. Many people forget about that heh. |
17:44:14 | brihat | thanks, will look it up |
17:46:40 | gradha | brihat: your nimrod version is lacking a buffer and a break inside the loop, presumably looking up something in that buffer |
17:47:15 | dom96 | Anyone on Ubuntu 12.04? |
17:47:48 | brihat | Xubuntu 13.10 |
17:47:59 | Araq | betawaffle: well I know how to make concurrency safe and fast. But the resulting type and effect system is really complex, so ... my design is kind of stuck. We're also still figuring out what's possible with the current system and it turns out it works quite well already. IMHO anyway. |
17:48:02 | brihat | gradha: why do i need a buffer? |
17:48:44 | gradha | brihat: I don't know why you need one, as I haven't looked into what the code does, but a quick look between the C version and nimrod suggest the C version uses the buffer as a lookup table to exit the inner loop faster through a break |
17:48:55 | gradha | but maybe your version accounts for this in another way |
17:52:24 | * | MFlamer_ joined #nimrod |
17:54:10 | * | IrvMG joined #nimrod |
17:54:37 | EXetoC | öööö |
18:04:21 | BitPuffin | hang on! |
18:04:24 | BitPuffin | the gods have arrived |
18:04:27 | * | BitPuffin bows before Araq |
18:04:46 | BitPuffin | Araq: If you fix some bugs by tomorrow I'll write an article about linagl so that we can show off nimrod |
18:11:34 | BitPuffin | Araq: basically currently demonstrating it would make nimrod look like complete garbage |
18:13:02 | * | petrus joined #nimrod |
18:14:30 | BitPuffin | Araq: because you have to do this atm: var m: TMatrix[float32, range[0..2], range[0..2] = [[399329.0f32, 488.37f32, 84.04f32], [48.0f32, 8.0f32, 888.0f32], [0.0f32, 8.9f32, 848.0f32]] |
18:14:40 | BitPuffin | missing ] |
18:14:58 | BitPuffin | Araq: the point is, it makes nimrod look extremely verbose |
18:17:07 | * | DAddYE joined #nimrod |
18:17:21 | * | DAddYE quit (Remote host closed the connection) |
18:17:27 | * | DAddYE joined #nimrod |
18:19:08 | brihat | what is linagl? u mean linalg -- linear algebra? |
18:22:20 | BitPuffin | brihat: https://bitbucket.org/BitPuffin/linagl |
18:24:01 | brihat | huh, confusing name.. why agl instead of alg? |
18:25:15 | BitPuffin | brihat: because it is also somewhat a graphics library |
18:25:47 | BitPuffin | I mean it's intended to also be used for 3d graphics |
18:25:48 | brihat | ok |
18:25:58 | BitPuffin | but not exclusively |
18:26:59 | brihat | i myself am looking for a linear algebra lib.. sort of numpy-replacement for nimrod |
18:27:22 | gradha | don't know about numpy, but isn't it a low level C library called from python? |
18:28:56 | * | gradha looks up numpy tutorial, shakes head, walks away confused |
18:28:59 | * | DAddYE quit (Remote host closed the connection) |
18:29:07 | brihat | nope, it's mostly a python library.. |
18:29:21 | BitPuffin | brihat: then linagl is your best bet |
18:29:27 | BitPuffin | brihat: it supports n-dimensional stuff |
18:29:48 | brihat | with some parts written in cython -- and cython indeed looks similar to nimrod |
18:30:23 | * | dyu quit (Quit: Leaving) |
18:30:41 | brihat | nimrod = python-like indentation + static types (not really...) |
18:30:52 | brihat | which is exactly cython as well |
18:32:36 | BitPuffin | brihat: like I said it is not exclusively a graphics library, it is intended to be use for general purpose linear algebra stuff too |
18:33:35 | brihat | BitPuffin: of course, sounds promising to me :) |
18:34:07 | * | brihat forgot to turn off the stove and the food turned black |
18:34:18 | gradha | metal food |
18:34:29 | EXetoC | sure, it's "not really" like that, yet it's almost exactly like cython :p |
18:35:27 | BitPuffin | brihat: however if it is not euclidian space things it might not be included, at least not for a long while as that's generally what I work with :P |
18:36:45 | * | MFlamer_ quit (Ping timeout: 265 seconds) |
18:37:47 | BitPuffin | tangent space is a thing though |
18:37:53 | BitPuffin | well not atm |
18:37:57 | BitPuffin | well I dunno |
18:37:59 | BitPuffin | it will be xD |
18:42:22 | gradha | the htmlparser module says with luck it can produce valid XHTML, how do I save a PXmlNode to disk? |
18:42:28 | EXetoC | brihat: it's exactly that if by exactly you mean only those characteristics |
18:43:02 | dom96 | gradha: xmltree probably has a $ |
18:44:02 | Araq | BitPuffin: bug number? |
18:44:09 | EXetoC | gradha: hm, is that a single sentence? :p |
18:44:40 | Araq | gradha: the htmla |
18:44:42 | Araq | gah |
18:44:56 | Araq | the htmlparser module even contains an example of how to do this iirc |
18:45:14 | dom96 | ooohhh. |
18:45:22 | dom96 | I can query for tags without cloning using git. |
18:46:10 | gradha | Araq: parsexml has a read only examples, if that's what you mean |
18:46:51 | dom96 | gradha: http://build.nimrod-lang.org/docs/xmltree.html#128 |
18:47:10 | dom96 | writeFile($xmlnode ...) |
18:47:30 | gradha | looks like the end of htmlparser.nim has that test Araq mentioned |
18:48:21 | brihat | BitPuffin: yea, n-D euclidean space is all i need. Plus some matrix decompositions |
18:49:09 | BitPuffin | brihat: you mean the three in numpy? |
18:50:14 | brihat | yea, more or less, that's all i need. |
18:50:37 | brihat | sometimes when I need > 3D in Matlab, i just use tensors or cell arrays |
18:51:00 | BitPuffin | sure those decompositions can be added |
18:51:01 | brihat | but numpy can do n-D |
18:51:24 | BitPuffin | probably not right away |
18:51:36 | BitPuffin | because I'm working on a project that has a hard deadline of this year for me :) |
18:51:39 | BitPuffin | but after that sure |
18:51:41 | BitPuffin | :D |
18:51:46 | BitPuffin | be sure to ping me about it |
18:52:01 | brihat | of course |
18:52:13 | BitPuffin | or if you dare to suffer through my pedanticness you can contribute it yourself but EXetoC would probably not recommend it |
18:52:17 | brihat | hope i can learn enough nimrod by that time, so that i can contribute if possible |
18:53:19 | BitPuffin | brihat: another nice way to contribute would be to write a separate project that uses it to put graphics on the screen. So that people can use it for scientific computing |
18:53:24 | BitPuffin | you know draw graphs and that stuff |
18:53:36 | BitPuffin | I believe matlab does that |
18:53:42 | BitPuffin | I think nimrod needs more matlabness |
18:54:49 | brihat | yeah, my dream project would be to write a python-to-nimrod converter.. so that I can port Matplotlib in just one day :) |
18:55:06 | gradha | brihat: nimrod is still in that state that having users testing stuff is already welcome |
18:55:16 | Araq | are you serious? I used matplotlib once ... |
18:55:28 | * | datura joined #nimrod |
18:55:42 | brihat | haha not really... |
18:55:48 | Araq | I ended up writing my own renderers, drawing pixel after pixel |
18:56:25 | * | gsp joined #nimrod |
18:56:30 | BitPuffin | Araq: basically being able to do [0, 2].TIvec2 would be lovely |
18:56:39 | Araq | this way I was in control and there was no need to figure out matplotlib's bad documentation |
18:56:42 | BitPuffin | and/or TIvec([0, 2]) |
18:56:46 | * | petrus quit (Quit: WeeChat 0.4.2) |
18:56:55 | BitPuffin | btw TIVec2[0, 2] crashes the compiler |
18:56:59 | dom96 | BitPuffin: Can't you create a template/proc which does that? |
18:57:23 | BitPuffin | dom96: it's already supposed to be possible to do that |
18:57:27 | brihat | matplotlib's documentation == look up Matlab documentation :P |
18:57:28 | BitPuffin | in fact for a while it was |
18:57:46 | brihat | but these days it has tremendously improved |
18:58:50 | dom96 | BitPuffin: Have you tried creating a template/proc? |
18:59:09 | * | brihat eating burnt pasta and watching Da Vinci code. Peace out until later |
18:59:48 | BitPuffin | dom96: proc TIVec2(a: array): TIVec2 = result = a probably won't work |
19:00:12 | dom96 | What is the definition of TIVec2? |
19:00:12 | BitPuffin | well it wouldn't look exactly like that but you get the pojnt |
19:00:27 | BitPuffin | TIVec2* = TVector[int32, range[0..1]] |
19:00:57 | dom96 | And the definition of TVector? |
19:01:04 | BitPuffin | TVector*[T; I] = array[I, T] |
19:02:28 | EXetoC | brihat: yum |
19:02:36 | EXetoC | brihat: good luck |
19:03:06 | * | IrvMG quit (Ping timeout: 246 seconds) |
19:04:36 | dom96 | BitPuffin: Try: [0'i32, 2].TIvec2 |
19:05:37 | BitPuffin | dom96: don't you mean i32 on both? |
19:05:43 | dom96 | no |
19:06:35 | EXetoC | yeah that's a shortcut |
19:07:01 | BitPuffin | uh |
19:07:12 | BitPuffin | well apparently there is a new issue |
19:07:26 | * | datura quit (Ping timeout: 240 seconds) |
19:07:55 | dom96 | This works for me: https://gist.github.com/dom96/d7db8957cf7f7a5ab6f9 |
19:08:59 | BitPuffin | https://gist.github.com/BitPuffin/7723193 |
19:09:03 | BitPuffin | how do you even explain that |
19:10:15 | dom96 | ¯\_(ツ)_/¯ |
19:10:34 | BitPuffin | aaaand babel is broken too |
19:10:46 | BitPuffin | yes |
19:10:48 | BitPuffin | ¯\_(ツ)_/¯ |
19:10:52 | BitPuffin | nimrods new mascot xD |
19:11:22 | * | IrvMG joined #nimrod |
19:13:07 | dom96 | Why is babel broken? |
19:13:30 | gradha | BitPuffin: did you update your babel today? |
19:14:27 | BitPuffin | https://gist.github.com/BitPuffin/7723249 |
19:14:31 | BitPuffin | gradha: yes |
19:14:38 | * | gradha implements a megatron program |
19:15:11 | BitPuffin | dom96: because it doesn't find the matrix module |
19:15:29 | gradha | the one you are installing? |
19:15:40 | BitPuffin | yes |
19:15:42 | BitPuffin | in babel |
19:15:56 | BitPuffin | test.nim(1, 13) Error: cannot open 'linagl/matrix' |
19:16:13 | BitPuffin | linagl/vector works though |
19:16:16 | BitPuffin | that's normal |
19:16:18 | dom96 | what are you compiling exactly? |
19:16:39 | BitPuffin | dom96: change the line in the gist to linagl/matrix instead of vector |
19:16:43 | BitPuffin | and it says tha |
19:16:45 | BitPuffin | t |
19:19:47 | BitPuffin | I'm gonna go buy some crisps |
19:19:55 | gradha | awww... saving html back to file with $ modifies stuff where it shouldn't |
19:22:32 | * | ryeguy joined #nimrod |
19:23:01 | * | datura joined #nimrod |
19:23:12 | dom96 | BitPuffin: Does babel not install linagl/matrix? |
19:23:24 | dom96 | BitPuffin: buy some fruit, crisps are bad for you :P |
19:24:03 | BitPuffin | nope |
19:24:04 | dom96 | yay, we're #22 on https://github.com/trending |
19:24:09 | dom96 | Araq: Did you see that yet? |
19:24:28 | BitPuffin | https://gist.github.com/BitPuffin/7723364 |
19:24:43 | BitPuffin | dom96: oh come on now I'm gonna feel bad for buying crisps |
19:24:48 | BitPuffin | :D |
19:24:56 | BitPuffin | yolo! |
19:24:56 | gradha | buy alcohol |
19:25:06 | BitPuffin | honestly though pomelo is the best fruit |
19:25:08 | BitPuffin | ever |
19:25:14 | gradha | I got myself today some whiskey cream, I wonder if I should open that now |
19:25:27 | BitPuffin | that's what I take when I can't eat crisps, and yesterday it was friday and today it is yesterday |
19:25:34 | BitPuffin | logic tells me that it is time for crisps |
19:25:57 | BitPuffin | dom96: wait could it be that it is installing 0.1.1 |
19:26:03 | BitPuffin | dom96: how do I tell it to install tip |
19:26:09 | BitPuffin | brb |
19:26:17 | Araq | dom96: nope |
19:26:22 | Araq | but sweet |
19:26:30 | * | Araq opens a bottle of beer |
19:26:38 | BitPuffin | fucking alcoholics |
19:26:44 | BitPuffin | in this community :D |
19:26:47 | * | dom96 opens a bottle of coke |
19:26:56 | gradha | well, I was drinking a banana shake |
19:26:57 | BitPuffin | dom96: coke is bad for you |
19:26:58 | dom96 | well, a can |
19:27:18 | dom96 | BitPuffin: yeah, it probably is. You can't. |
19:27:24 | gradha | aluminium is not healthy either |
19:29:23 | dom96 | it's not?! I've been adding it to my cereal every day. |
19:29:52 | gradha | lol, cereals are not healthy at all |
19:29:53 | dom96 | BitPuffin: Go into your linagl dir and run 'babel install' |
19:30:07 | * | DAddYE joined #nimrod |
19:30:16 | IrvMG | http://nimrod-lang.org/httpserver.html procs in client: TSocket? request hostname? |
19:34:01 | EXetoC | gradha: some brands are really awful in that regard |
19:34:31 | * | DAddYE quit (Ping timeout: 260 seconds) |
19:35:11 | gradha | EXetoC: I've always thought that anything with labels like "we added vitamin C, and B, and A, and D, and we added Iron, and..." is really shit food from the beginning |
19:35:46 | EXetoC | probably |
19:36:51 | * | mflamer quit (Ping timeout: 245 seconds) |
19:40:10 | * | DAddYE joined #nimrod |
19:40:20 | * | IrvMG quit () |
19:42:33 | BitPuffin | dom96: but doesn't babel have a command to install latest? |
19:42:43 | BitPuffin | or flag |
19:42:57 | dom96 | not yet |
19:44:14 | * | DAddYE quit (Ping timeout: 240 seconds) |
19:44:17 | BitPuffin | dom96: well at least now things work |
19:48:17 | dom96 | good |
20:05:29 | BitPuffin | dom96: okay it should be good enough for an article :) |
20:05:35 | gradha | so how's this github trending thing get calculated? number of forks? number of hits? number of what? |
20:05:56 | BitPuffin | Araq: okay so other than breaking the hell out of code, why wouldn't var f = T(v) work? |
20:06:33 | BitPuffin | it would take a way the : wart I think |
20:06:44 | BitPuffin | at least if you made constructors use = instead of : |
20:06:49 | BitPuffin | then it would be completely gone |
20:07:12 | BitPuffin | hmm |
20:07:17 | BitPuffin | well except for procs |
20:07:24 | BitPuffin | and parameters |
20:07:29 | BitPuffin | I think I see your point Araq |
20:11:45 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
20:11:46 | gradha | fowl: maybe the nimrod compiler should mine bitcoins too http://www.techienews.co.uk/973462/bitcoin-miners-bundled-pups-legitimate-applications-backed-eula/ |
20:15:49 | BitPuffin | gradha: there was a game launcher that mined bitcoins lol |
20:15:52 | BitPuffin | they had to pay |
20:18:02 | EXetoC | let's sneak bitcoin mining into the linux kernel |
20:18:30 | BitPuffin | probably easier to sneak it into nimkernel |
20:18:33 | BitPuffin | just don't tell dom96 |
20:22:51 | gradha | step 1) make nimrod compiler time how long it takes to compile something |
20:23:02 | gradha | step 2) multiply the time by five and spend that amount mining bitcoins |
20:23:13 | gradha | step 3) claim it's still faster than python/go/ruby/jave/whatever |
20:24:11 | BitPuffin | gradha: but then Walter Bright could slap us across the forehead with his penis |
20:24:31 | gradha | lol, did read that as "with his forehead penis" |
20:25:00 | gradha | BitPuffin: does the D compiler already do that? |
20:25:38 | BitPuffin | gradha: no but the D compiler is quick |
20:25:40 | BitPuffin | haha |
20:25:42 | BitPuffin | forehead penis |
20:25:47 | BitPuffin | marvelous |
20:26:06 | gradha | "it's a unicorn… no, oh, wait… ugh!" |
20:27:01 | BitPuffin | ouch, it's stuck!! |
20:31:48 | * | DAddYE joined #nimrod |
20:34:44 | * | gradha wonders if people will know Nimrod before having 4K TV |
20:36:01 | * | DAddYE quit (Ping timeout: 245 seconds) |
20:50:13 | gradha | oh, didn't know github supported diff format for code blocks, nice |
20:53:38 | * | aftershave joined #nimrod |
21:06:06 | BitPuffin | hello aftershave |
21:06:10 | BitPuffin | welcome |
21:06:34 | * | gradha doesn't remember any previous bearded nick |
21:11:39 | Araq | er ... do we really need the symmetric diff of sets? |
21:11:56 | gradha | wat? |
21:11:58 | Araq | I don't think I needed that in my entire lifetime |
21:12:13 | Araq | system.`-+-` |
21:12:35 | Araq | and apparently it never worked |
21:12:41 | BitPuffin | haha |
21:12:44 | BitPuffin | you never tested it? |
21:12:56 | BitPuffin | Araq: someone will ask for it so you may as well leave it in |
21:13:30 | Araq | I don't think so, it's not related in any way to be able to write '.' in yet another context |
21:14:40 | Araq | which seems to be all there is to language design these days |
21:14:43 | BitPuffin | well I mean someone will come and whine and say that the set implementation is incomplete |
21:14:54 | BitPuffin | I don't see why it would hurt to leave it in |
21:14:57 | * | zielmicha quit (Ping timeout: 250 seconds) |
21:15:18 | BitPuffin | if only to leave it broken until someone actually needs it |
21:15:37 | Araq | no for the simple reason that C# and C lack sets completely |
21:16:00 | BitPuffin | so? |
21:16:09 | BitPuffin | doesn't pascal have sets? |
21:16:15 | BitPuffin | or some language |
21:16:26 | Araq | yeah but nobody's left who actually knows Pascal |
21:17:09 | Araq | and both the original Pascal and the Delphi dialect lack -+- so there you go |
21:17:17 | BitPuffin | well, maybe some pascaller set maniac sees that there is a new language called nimrod that is in some ways a bit similar to pascal and has the sets |
21:17:19 | BitPuffin | oh |
21:17:21 | BitPuffin | well |
21:17:24 | BitPuffin | I dunno |
21:17:27 | BitPuffin | what does it even do |
21:17:41 | Araq | A-B + B-A obviously |
21:18:03 | BitPuffin | ah right |
21:18:05 | BitPuffin | forgot |
21:18:16 | BitPuffin | I'm sure that's useful for.... something |
21:18:23 | BitPuffin | what does people in math use it for? |
21:18:33 | Araq | well it maps to the 'xor' operation |
21:18:38 | gradha | abba? it's music, not math |
21:18:50 | BitPuffin | gradha: derp |
21:18:59 | BitPuffin | Araq: do people use xor? |
21:19:06 | Araq | and 'xor' surely is useful |
21:19:46 | OrionPKM | okay who put Britney Spears as the author of IDE tools |
21:20:06 | gradha | OrionPKM: why? |
21:20:23 | OrionPKM | why indeed |
21:20:32 | gradha | indeed |
21:20:39 | EXetoC | yes indeed |
21:20:44 | BitPuffin | indeeed! |
21:20:50 | EXetoC | indeeeeeeeed! |
21:20:53 | gradha | it was a SEO operation, to make Nimrod more visible |
21:21:10 | EXetoC | good thinking |
21:21:18 | gradha | after all, Britney is quite capable http://britneyspears.ac/lasers.htm |
21:22:21 | BitPuffin | http://www.youtube.com/watch?feature=player_detailpage&v=nSLqpeNz21s#t=41 |
21:23:49 | BitPuffin | indeeed |
21:32:59 | * | DAddYE joined #nimrod |
21:37:02 | * | DAddYE quit (Ping timeout: 240 seconds) |
21:38:00 | * | filwit joined #nimrod |
21:41:10 | filwit | hey Araq, I was talking to the Kate folks, trying to figure out how to make block-comments work right for Nimrod, but it turns out it's not possible, due mostly because of how strict Nimrod is about comment placement. |
21:41:45 | filwit | I was wondering (since i've heard you mention it before) if you ever have plans on removing comments (not doc-comments) from the AST? |
21:43:00 | gradha | filwit: how will tools manipulating the AST preserve comments then? aka refactoring |
21:43:09 | Araq | well yeah and it's in my todo |
21:43:17 | filwit | I'm not sure of what use-cases having AST comment provides really, i can see how it might be useful for translating Nimrod code to a different language.. but i'm not sure exactly how useful *that* is, or how important it is to the community. |
21:43:44 | filwit | Araq: ahh, okay awesome. |
21:44:21 | filwit | Araq: that should make it easier to make work with different editors |
21:44:23 | Araq | gradha: refactorings need to do it differently anyway as nobody likes the refactoring to mess up with the number of empty lines etc. |
21:44:43 | filwit | ^ |
21:45:14 | gradha | Araq: I was thinking of the "make nimrod look as per convention" prettifier, if that's going to strip useful stuff |
21:45:43 | Araq | the prettifier tries hard not to mess with the empty lines etc. |
21:45:49 | Araq | also "\t" is a problem |
21:46:42 | filwit | yes, i normally think of comment lines sorta like empty lines, and empty lines can already break the indentation rule |
21:46:57 | Araq | you can write it as "\x09" too and now you're in a world of trouble, because the AST loses this information and you can't simply turn it into "\t" without pissing off the people using strings for binary data |
21:47:48 | Araq | the original idea was cool but I consider it a failed experiment |
21:48:22 | gradha | good thing we have regular expressions |
21:49:10 | Araq | filwit: comments can be used as an empty statement though. This makes the patch quite ugly. |
21:49:46 | filwit | Araq: use 'nil' instead? |
21:50:02 | filwit | idk, maybe i misunderstand what you mean |
21:50:17 | Araq | actually 'nil' is another problem for the empty statement |
21:50:31 | Araq | IMO it should be an empty "discard" statement |
21:50:53 | filwit | well that sounds fine to me |
21:51:08 | filwit | it's already used on case/else statements a lot right? |
21:51:10 | Araq | filwit: the problem is not changing the language. The problem is it breaks code. MUCH code. |
21:51:41 | filwit | Araq: yes, i understand. I can help with the grunt work if that's a major concern |
21:52:49 | Araq | alright that's a word. However it's needs a deprecation path. |
21:53:33 | filwit | yeah, that's going to be hard with this change |
21:53:40 | filwit | actually.. no it's not |
21:53:45 | filwit | just make a compile switch |
21:53:47 | filwit | and a warning |
21:54:07 | Araq | however ... I wonder why Kate can't do it easily. A KDE editor should be all about plugins. |
21:54:32 | filwit | it's possible if i make my own indentor or something |
21:54:43 | filwit | but more complicated than it should be |
21:54:44 | dom96 | Making plugins isn't easy I bet |
21:54:50 | filwit | ^ |
21:55:07 | filwit | i have to write code analysis in JS... |
21:55:40 | dom96 | Somebody should try figuring out why Araq's slides are not working on mobile/tablets. |
21:55:48 | dom96 | Any HTML/JS gurus here? |
21:55:58 | filwit | yeah i can look at it dom96 |
21:56:09 | filwit | i have a couple tablets iOS and Android |
21:56:27 | filwit | was going to check this morning, but got tired |
21:56:35 | dom96 | filwit: thanks |
21:57:02 | Araq | filwit: you can write Nimrod instead and compile that to JS ;-) |
21:58:17 | filwit | Araq: lol.. |
21:58:58 | filwit | Araq: but for real, it's not just Kate that's annoying about the AST comments. Sometimes i just want to quickly through a comment char somewhere, and have to make sure it's inline instead |
21:59:10 | filwit | not a big deal or anything, just an annoyance |
21:59:22 | filwit | one sec, let me test the slides... |
22:00:07 | gsp | Araq: What's the "correct" way of fetching more than 10 (=MaxSubpatterns) captures using the pegs module? My usecase is parsing some representation of a set of elements, i.e. generally there are lots of elements (and I'm using the grammar to make sure each element is wellformed). |
22:01:09 | filwit | god.. sometimes i really suck at typing... my mind thinks "throw" and my hands write "through" |
22:02:13 | Araq | gsp: make a single subpattern and split it on the separator afterwards? |
22:04:03 | Araq | I'm not sure but it looks like you really want to allow a variable number of patterns which isn't supported and I'm not sure how it could be supported. |
22:05:53 | filwit | dom96: where's the source for the slides? the html look generated.. |
22:06:30 | dom96 | filwit: It's Araq's so probably on his computer somewhere. |
22:06:40 | gradha | good night, honey badgers |
22:06:48 | * | gradha quit (Quit: bbl, need to watch https://www.youtube.com/watch?v=2IzR_ClTE8Y again) |
22:07:32 | Araq | filwit: I used nimrod's documentation system for the slides, obviously |
22:07:43 | Araq | told you I never use anything else anymore :P |
22:08:30 | filwit | yeah, i figured it was something like that. unfortunately it's going to make fixing a pain.. especially since it's tablets that are the only problem.. |
22:08:53 | filwit | iOS shouldn't be hard, but Android is hard to inspect |
22:09:16 | gsp | Araq: hmm, I guess I'm a little spoiled by the approach treetop (which you probably know; if you don't: a peg gem for ruby) has taken, that being copious amounts of annotations of the grammar with user-provided code, which essentially combines the parsing process with the step where you build your data structure representation from the matches |
22:09:43 | dom96 | filwit: Maybe looking at this would be easier: http://www.w3.org/Talks/Tools/Slidy2/ |
22:10:16 | filwit | dom96: the swipe functionality works fine. It's the CSS that's messing up on the tablets |
22:10:43 | dom96 | I see, interesting. |
22:11:28 | filwit | yeah, it makes it unreadable, and the frame's width/height aren't being set right or something. |
22:12:46 | eigenlicht | Araq: we had this discussion earlier today and people said you could know |
22:13:07 | eigenlicht | I was wondering whether nimrods meta programming is equivalent in power to that of modern lisp dialects? |
22:13:43 | filwit | ^ he wanted to know if Nimrod supported "multi dispatch", but no one knows exactly what that means... lol |
22:14:59 | eigenlicht | filwit: it's seems like you misunderstood me. a guy in #lisp was talking about multiple dispatch when i asked about the meta programming capabilities. multiple dispatch is about OOP, not directly related to metaprogramming |
22:15:50 | brihat | multiple dispatch = julia! |
22:15:52 | filwit | okay, my bad |
22:16:27 | filwit | dom96: that Slidy2 demonstration has the same problems on iOS as the Nimrod slides... |
22:16:38 | dom96 | filwit: yeah, it's the same on Android. |
22:16:53 | eigenlicht | brihat: correct, julia has it too |
22:17:01 | dom96 | It's not a problem with Araq's slides, it's a bug in Slidy. |
22:17:16 | filwit | yeah, unfortunately tha'ts a much harder problem to fix |
22:17:31 | eigenlicht | IMO it would be enough to provide a pdf version |
22:17:32 | brihat | eigenlicht: metaprogramming THE catch-point of Nimrod. But multiple dispatch is the core paradigm of Julia |
22:17:47 | brihat | Here: http://nbviewer.ipython.org/gist/StefanKarpinski/b8fe9dbb36c1427b9f22 |
22:18:03 | * | xenagi joined #nimrod |
22:18:58 | filwit | dom96: i could just remake the HTML using Hammer.js.. but i'm not sure it's worth it |
22:19:03 | dom96 | so who came up with this honey badger mascot? |
22:19:12 | filwit | Varriount |
22:19:24 | eigenlicht | brihat: that's all related to OOP, isn't it? |
22:19:59 | filwit | Araq: can you send me the original source for these slides? |
22:20:54 | brihat | eigenlicht: i can't define what OOP is anymore :P |
22:21:22 | eigenlicht | it's easy: an overrated programming paradigm |
22:21:26 | * | eigenlicht ducks |
22:21:40 | brihat | eigenlicht: To me M.D just a generalized way of function overloading |
22:22:22 | filwit | eigenlicht: no need to duck.. you've come to the right place to make statements like that, lol |
22:22:28 | Araq | eigenlicht: Nimrod's metaprogramming is arguably further advanced than Lisp's because Nimrod supports term rewriting macros with side effect and alias analysis constraints |
22:22:50 | eigenlicht | brihat: function overloading is compile time, mutli dispath is (usually) runtime |
22:23:11 | Araq | which I have seen nowhere else |
22:24:18 | Araq | eigenlicht: other people might argue Lisp is more expressive due to its dynamic typing |
22:25:17 | eigenlicht | Araq: well, I'm actually more interested in a comparison only related to meta programming, not other traits such as typing (as far as one can be judged without the other) |
22:25:29 | eigenlicht | I gotta check about the term rewriting macros though |
22:30:48 | Araq | well they are actually the same otherwise |
22:30:58 | eigenlicht | Araq: I'm not sure whether I fully understand what term rewriting macros are, but isn't that a whole different (runtime-based) approach to macros? |
22:31:11 | Araq | it's not runtime-based |
22:31:17 | Araq | it's all done at compile-time |
22:31:20 | eigenlicht | similar to what mathematica is doing |
22:32:10 | Araq | well template+macro is like Lisp's macro, only the quoting rules are easier. IMHO anyway. |
22:34:29 | * | DAddYE joined #nimrod |
22:34:45 | eigenlicht | Araq: may I quote you on that for: https://pay.reddit.com/r/programming/comments/1rpwk4/nimrod_a_new_approach_to_meta_programming_slides/cdq5tib |
22:35:00 | eigenlicht | or you may answer yourself, if you have a reddit acc |
22:38:38 | * | DAddYE quit (Ping timeout: 240 seconds) |
22:40:35 | * | xenagi quit (Quit: Leaving) |
22:40:38 | Araq | I have but then people wonder why I only answer a single question, so I'd rather pretend I'm not there. :-) |
22:41:51 | filwit | Araq tries his best to avoid the inevitable popularity that comes with creating a growing language... |
22:42:52 | Araq | well excuse me. I can either fix bugs or pretend that I know all about every Lisp dialect on the planet on reddit. |
22:42:58 | eigenlicht | just like haskell tries/tried to "avoid success at all costs" |
22:43:03 | filwit | soon, Araq, you will need to do weekly AMA's |
22:43:22 | filwit | lol |
22:43:44 | eigenlicht | Araq: is that a yes or no to quoting you? just for the sake of completeness, since others seem to be interested in thsi question too |
22:43:51 | BitPuffin | Araq: haha :D |
22:44:48 | Araq | eigenlicht: that's a yes for quoting me |
22:45:15 | BitPuffin | people are really bad scientists |
22:45:18 | eigenlicht | Araq: I'll try to not make you sound like you know everything about every lisp dialect ;) |
22:45:34 | BitPuffin | if they wanna figure out whether it's as powerful idea, here's an idea, try and compare them ;D |
22:45:58 | BitPuffin | s first /idea// |
22:46:15 | BitPuffin | it's not a good idea to think ahead of your typing |
22:46:52 | BitPuffin | shows that you are not putting enough effort in to typing as fast as you think :P |
22:49:04 | Araq | eigenlicht: Nimrod's macros interact with overloading resolution (OR) and compile time function evaluation quite heavily. Common Lisp doesn't have overloading and the line between compile-time and runtime is blurred. |
22:49:27 | Araq | it's not that easy to compare them |
22:50:21 | eigenlicht | I understand that they are use different approaches, and I don't want to have a case-to-case comparison for everything you can do with lisp macros |
22:50:35 | BitPuffin | well then what do you want? |
22:50:59 | Araq | well there is nothing that a Lisp macro can do that Nimrod can't. The other direction is harder to answer. |
22:51:19 | BitPuffin | lisp can do static typing |
22:51:22 | BitPuffin | but it's a pain in the ass |
22:51:56 | eigenlicht | it's just that there are a lot of other "macro" systems out there, but none or very few of them can compete with lisp macros |
22:52:45 | eigenlicht | afaik there are statically typed lisps which are quite handy |
22:53:21 | Araq | yes there are "Lisps" and that's a big problem for answering any question about Lisp. |
22:53:26 | BitPuffin | oh, I was just referring to cl |
22:54:02 | eigenlicht | yeah, I know |
22:54:29 | BitPuffin | isn't it pretty safe to assume cl when someone says lisp? |
22:54:43 | eigenlicht | depends on the context I guess |
22:54:47 | BitPuffin | I mean usually when there is something else you say, scheme, clojure, racket etc |
22:54:58 | eigenlicht | also, most time i talk about "lisp", i'm thinking about clojure in my head |
22:55:04 | BitPuffin | yeah sure but I mean whan someone says "I'm writing software in lisp!" |
22:55:25 | eigenlicht | that could mean anything. if someone says this to me, I'd ask which dialect |
22:55:58 | Araq | actually I assume "common lisp" but people really mean the family more often, I think |
22:56:07 | eigenlicht | hence, I don't think it's safe to assume "cl" when someone says "lisp" |
22:56:17 | Araq | when people say "C" it's "Ansi C" |
22:56:30 | Araq | when people say "Lisp" they mean the large family |
22:56:30 | BitPuffin | hmm, when I say C it's C11 lol |
22:57:00 | eigenlicht | I'll just quote you on "there is nothing a Lisp macro can do that Nimrod can't" - sounds safe to me |
22:57:05 | BitPuffin | when people say they have a model m, do they mean ibm or unicomp? |
22:57:20 | BitPuffin | eigenlicht: that's probably not a good idea |
22:57:29 | filwit | ^ lol |
22:57:30 | BitPuffin | given that there are billions of lisps |
22:57:43 | filwit | it might make that reddit post more "popular" though |
22:58:10 | BitPuffin | eigenlicht: I can quote Araq in saying that the only language he's seen that has more powerful metaprogramming than nimrod is kernel |
22:58:12 | BitPuffin | and kernel is a lisp |
22:58:21 | BitPuffin | and doesn't have a compiler |
22:58:22 | * | Jackneilll quit (Remote host closed the connection) |
22:58:24 | BitPuffin | only interpreters |
22:58:33 | eigenlicht | I'll make it common lisp then, just to be sure |
22:58:44 | BitPuffin | yeah do it |
22:58:49 | eigenlicht | man, trying to be correct can be really tough |
22:58:50 | Araq | actually add BitPuffin's remark, it's good |
22:59:08 | eigenlicht | k, I feel like a journalist right now |
22:59:44 | BitPuffin | eigenlicht: start a nimrod magazine or we'll punch you |
22:59:48 | BitPuffin | ;D |
23:00:04 | filwit | call it the Nightly Nimrod |
23:00:13 | BitPuffin | that's pretty catchy |
23:00:13 | eigenlicht | Naughty Nimrod |
23:00:19 | filwit | ^ even better |
23:00:28 | BitPuffin | that is gradhas nimrod zine |
23:01:17 | dom96 | Somebody does a "This week in Rust". Maybe somebody should actually do the same thing for Nimrod? Although maybe "month" would be better... |
23:02:23 | BitPuffin | dom96: yeah considering nimrod isn't backed by the biggest most awesome non preffit evar |
23:02:32 | eigenlicht | that wikipedia articple on kernel indeed is a hell of a stub |
23:04:01 | BitPuffin | man some people are really freaking out over the slides |
23:04:19 | eigenlicht | on reddit? yeah r/programming isn't the best sub |
23:04:25 | BitPuffin | I like crazy_eddie the most so far |
23:04:30 | BitPuffin | "Fix that fucking website! All I can see is an author and directions that don't work. Why the fuck even do that? What's wrong with a normal website?" |
23:04:37 | BitPuffin | "Meh. Got places to be. Already lost interest." |
23:04:38 | dom96 | Yet another language with no references, and yet it gets an article and Nimrod doesn't. |
23:04:43 | BitPuffin | such a character |
23:05:02 | dom96 | oh wait, i'm blind. There are two references. |
23:09:03 | BitPuffin | dom96: blinded by hatred? |
23:09:17 | dom96 | indeed |
23:11:47 | BitPuffin | Araq: thoughts on this guy? https://pay.reddit.com/r/programming/comments/1rpwk4/nimrod_a_new_approach_to_meta_programming_slides/cdpqz51 |
23:11:54 | BitPuffin | wanna take 'im down? |
23:12:49 | filwit | as abrasive and overly opinionated (and wrong) as that guy is, he's actually not saying anything that other's havent said before. |
23:13:05 | BitPuffin | I think a lot of his stuff that was wrong was highly subjective things that is obviously not possible to say objectively that it is wrong |
23:13:52 | filwit | for instance, it doesn't really make sense that case/of statements have optional indentation in a indentation-significant-language (even though it's a feature i originally requested...) |
23:14:23 | BitPuffin | And I don't see why he's got a big issue with colons in general. I think that nimrod has a problem with colons maybe meaning a bit too much but that's not his problem. He just doesn't like colons |
23:14:24 | filwit | and the fact that there's two ways to write countup(), and the T/P thing.. |
23:15:02 | BitPuffin | T/P? |
23:15:07 | BitPuffin | ah |
23:15:09 | filwit | all been said before.. he just said it will less sugar coating (and he's just wrong about all this "OMG look at the colons!" thing) |
23:15:11 | BitPuffin | types and pointers |
23:15:50 | BitPuffin | hahaha |
23:15:53 | BitPuffin | this one was great |
23:15:59 | BitPuffin | "So you think Python has ugly syntax, C is too slow and Lisp would be better without macros?" |
23:16:40 | BitPuffin | "I don't even know lisp." Good thing he could say that nimrod has the worst of lisp then |
23:17:45 | eigenlicht | he said it's reference to something |
23:19:56 | BitPuffin | eigenlicht: yeah that it advertises itself as having stuff from lisp |
23:21:28 | * | ics joined #nimrod |
23:22:10 | EXetoC | trolololz |
23:22:24 | filwit | what he is defiantly doing, is blowing these things out of proportion. Most likely because he's used to working with some C# or Java stack with all it's fancy bells-n-whistles. So when he sees a language that's suppose to be "the next new thing", he expects it to appeal to him on every level.. I've heard these same argument, given with almost the same level of disregard, from my brother. |
23:22:37 | BitPuffin | https://pay.reddit.com/r/programming/comments/1rpwk4/nimrod_a_new_approach_to_meta_programming_slides/cdps715 :3 |
23:23:32 | BitPuffin | filwit: well he's venting |
23:23:37 | BitPuffin | I'd say |
23:23:44 | filwit | yeah, exactly |
23:24:14 | * | dom96 wonders why all these reddit links have the 'pay' subdomain |
23:24:43 | filwit | they want your money, and are sending subliminal messages... it's a conspiracy! |
23:24:46 | BitPuffin | something probably recently slammed his work so he had to slam someone else's |
23:25:03 | BitPuffin | no I think it's more of a scheme to destroy humanity from reddit |
23:25:07 | BitPuffin | they are gonna make us pay |
23:25:31 | eigenlicht | dom96: only pay.reddit.com supports https |
23:25:49 | * | snuderl quit (Ping timeout: 250 seconds) |
23:25:54 | eigenlicht | I guess others here are linking to the pay subdomain because I linked the post before and i surf reddit https only |
23:26:55 | * | ics quit (Ping timeout: 260 seconds) |
23:27:43 | eigenlicht | on why it's called pay...not sure. once read on reddit that it might was planned as a gold only feature, or the subdomain just be used during payment, etc |
23:28:21 | BitPuffin | something like that probably |
23:36:07 | * | oal joined #nimrod |
23:45:38 | ryeguy | re: "this week in rust" posts - that would be great if nimrod had it too |
23:46:00 | ryeguy | it's very helpful for knowing what i'm getting myself into if i update to the current nightly once a week |
23:46:43 | Araq | well we have the changelog and releases for that |
23:47:00 | ryeguy | it' |
23:47:04 | ryeguy | it's not the same |
23:47:42 | ryeguy | those go into recent changes, discussions that may impact future changes, links to projects people are working on, and links to that week's blog posts and big discussions |
23:48:26 | fowl | hola |
23:51:53 | BitPuffin | hay fowl |
23:52:05 | filwit | hi fowl |
23:52:06 | Araq | we don't have any of these. :-) big discussions are suppressed by our leadership. |
23:56:39 | filwit | i found out about D because of Tiobe language index... so obviously ALL we need to do is get Nimrod popular enough to be on that list, then people will start writing more articles about it. |
23:57:02 | ryeguy | that's the slow route |
23:57:10 | ryeguy | let's take the rails route and trash talk another language |
23:57:12 | filwit | lol, yeah, it was just a joke |
23:57:23 | ryeguy | then you get 3 blog posts in response for every 1 blog post |
23:57:27 | ryeguy | promotion takes care of itself |
23:57:34 | filwit | ^ genius |
23:57:37 | ryeguy | thank you |
23:57:55 | ryeguy | we could make fun of ~&@rust |
23:58:35 | * | IrvMG joined #nimrod |
23:58:52 | Araq | well I really respect Rust. |
23:59:01 | ryeguy | i know, it was a joke :D |
23:59:02 | brihat | atleast in C++ i can remember shared_prt and unique_ptr.. In Rust god knows why there are 4 types of pointers |
23:59:03 | ryeguy | rust is nice |
23:59:15 | eigenlicht | why not target whole categories? like dynamic typed languages, (pure) functional languages, ... |
23:59:23 | ryeguy | lisp is an easy target |
23:59:26 | Araq | and this is coming from me, a guy who hates everything ;-) |
23:59:35 | ryeguy | the claim that was being discussed earlier will make lispers mad |
23:59:55 | Araq | lispers are already mad because of clojure |