00:00:09 | * | DAddYE quit (Ping timeout: 252 seconds) |
00:00:16 | Araq | I don't want to see } } } or 'end end end' for that matter |
00:00:45 | filwit | yeah i'm fine with indent-style. my brother hates it for some reason, but it's just fine to me |
00:00:51 | Araq | these things are to keep primitive parsers happy IMO |
00:01:00 | filwit | honestly, i could care-less either way.. sounds odd coming from me, lol |
00:01:21 | filwit | but it's the same with the case-sensitivity.. the ability to choose isn't bad really |
00:01:44 | filwit | Araq: yeah, just like ending marks |
00:01:50 | BitPuffin | well is @ really this in ruby though? |
00:01:57 | BitPuffin | I thought it was more like static or something |
00:02:08 | BitPuffin | can't remember lol, too tired :P |
00:02:29 | filwit | idk, i don't know anything about Ruby really |
00:02:51 | BitPuffin | or wait no it's kind of like this |
00:02:57 | BitPuffin | it means that it's available to other methods |
00:03:19 | filwit | either way, it's not a bad design |
00:04:48 | Araq | I used to make fun of Ruby. "scope is so important that it's a sigil and yet the type is so unimportant I can't even write it down!?" but I changed my mind |
00:05:21 | Araq | scopes are important ;-) |
00:05:35 | Araq | but types too |
00:06:10 | BitPuffin | yup |
00:08:22 | fowl | filwit, i wrote something like this before |
00:08:28 | filwit | btw, Araq, i'm not sure i like the idea of submodule. So if you had any plans on implementing it to appease people like me, i'm just letting you know i don't really see it's advantage |
00:08:38 | filwit | fowl, cool |
00:08:48 | Araq | filwit: alright, good to know |
00:09:16 | Araq | I still like it cause it's easy to implement and pleases dot lovers |
00:09:27 | Araq | dom96 hates it though :D |
00:09:31 | filwit | fowl, my main goal isn't just to have OOP-tyle object definitions, but to be able to compile them to communicate with an editor and things how i need |
00:09:53 | filwit | Araq: i think it's afraid it will get abused |
00:10:04 | Araq | surely it will |
00:10:21 | Araq | especially since I consider any use of it an abuse |
00:10:30 | Araq | but it's simple to implement |
00:10:42 | filwit | Araq: what would be a better design, i think, is if you could just used sub-modules (that are from folders) |
00:10:56 | Araq | meh folders suck |
00:11:11 | filwit | well, you already have the ability to do: import foo.bar |
00:11:18 | Araq | sure |
00:11:21 | filwit | what if you just did: import foo |
00:11:24 | dom96 | Dynamic typing is easy to implement too. Lets just get rid of the type system! :P |
00:11:29 | filwit | but then you could do "bar.somthing" in your code |
00:11:35 | filwit | without having to import it |
00:11:43 | filwit | but you had to prefix |
00:11:51 | filwit | unless you import, i mean |
00:12:00 | Araq | filwit: that's somewhat harder to implement |
00:12:07 | Araq | and I dislike that much more |
00:12:32 | filwit | okay, fine, but can i ask why you dislike it more? |
00:12:46 | Araq | folders are irrelevant, heck hierarchies simply don't work and I wish the file system would be a relational database |
00:13:43 | filwit | i completely disagree, hierarchies are rational.. just not *single* hierarchical classification |
00:13:56 | filwit | then again.. i don't know much about this topic |
00:14:14 | filwit | and i would be crazy to debate a database programmer about it, lol |
00:15:00 | Araq | well even if you're right. *single* hierarchies are all that you get from a file system |
00:15:30 | dom96 | Why a relational database? How would that help? |
00:17:54 | filwit | if everything only has a single namespace.. you end up just using '_' instead of '.' for the same thing |
00:18:04 | filwit | import math_vector |
00:18:08 | filwit | import math.matrix |
00:18:12 | filwit | same thing.. |
00:18:21 | Araq | no. not at all. |
00:18:33 | Araq | math.matrix # sexy and I want to sleep with it |
00:18:42 | filwit | LOL |
00:18:43 | Araq | math_matrix # meh, ugly like my wife |
00:18:44 | filwit | true |
00:18:58 | filwit | whoops.. bad timing on my part, haha |
00:19:07 | filwit | but still, lol |
00:19:15 | fowl | Araq, you have a wife? |
00:19:55 | * | BitPuffin quit (Read error: Operation timed out) |
00:20:06 | filwit | when you are famous, Araq, you will be asked to give interviews about your life all the time |
00:20:21 | filwit | just saying.. |
00:20:46 | EXetoC | c(:) |
00:21:20 | filwit | ^ ? |
00:21:27 | filwit | is that a face of some kind? |
00:21:45 | Araq | well I have a wife and she isn't ugly *cough* |
00:22:17 | * | dom96 can confirm |
00:22:59 | filwit | oh snap, forgot i had Doctor Who loading.. :D |
00:24:31 | dom96 | David Tennant <3 |
00:25:22 | filwit | no spoilers though, i haven't watched it yet |
00:25:45 | Araq | dom96: well relational databases are good for everything. you can perform adhoc queries like "how many .nim files do I have" without iterating over the hierarchy |
00:26:05 | Araq | depends on the implementation though ofc |
00:26:37 | filwit | isn't mongoDB better in a lot of ways than SQL? |
00:26:54 | Araq | hell no |
00:26:59 | dom96 | Wouldn't you have to search through all files anyway though? |
00:27:06 | filwit | ^^ |
00:27:12 | Araq | and I've used both excessively, so trust me. |
00:27:19 | Araq | I know you don't |
00:27:37 | filwit | i don't use databases |
00:27:55 | Araq | that's no reason not to mistrust me |
00:27:56 | filwit | actually, i'm building a MSSQL right now (my brother an I are) |
00:28:07 | filwit | but it's not an area i know much about |
00:28:21 | Araq | that's no reason not to argue vehemently with me |
00:28:51 | filwit | good point |
00:29:11 | filwit | you're wrong, no matter what argumen arise |
00:29:17 | filwit | arguments* |
00:29:36 | Araq | yup. |
00:30:08 | filwit | still, i thought the only ways for efficient data searching was to pre-sort things into external lists? |
00:30:21 | Araq | dom96: no. you wouldn't if you have an index on the file extension/ file type. |
00:30:24 | filwit | couldn't the same thing be done for hierarchical systems? |
00:30:30 | dom96 | ^^ |
00:31:23 | Araq | filwit: sure but it's unnatural :P |
00:31:29 | dom96 | You can build an index like Vista/7 does and then searching would be fast. |
00:31:38 | EXetoC | filwit: + binary search? |
00:31:45 | Araq | yes. modern FS reinvent databases. |
00:32:21 | filwit | well, that's technically was MongoDB is right (a JSON-tree + indexing) ? |
00:33:19 | filwit | hierarchy is a natural formation really.. for instance, transformation children |
00:33:44 | Araq | yes, mongo is json + indexing + mmap |
00:34:02 | dom96 | Relational databases only make sense if you have some sort of relationship between different entities. So you can get rid of the redundancy easily. |
00:34:35 | Araq | dom96: hierarchies also model a relation |
00:35:03 | filwit | Araq: for some reason it seems like both databases and modern filesystems are virtually the same thing, just looked at from reverse directions |
00:35:15 | * | CarpNet quit (Quit: Leaving) |
00:35:31 | filwit | the memory is laid out differently maybe.. |
00:35:49 | dom96 | So what do you propose? A directory table which is linked to a file table? |
00:36:14 | dom96 | But then a directory can also contain other directories... |
00:36:26 | filwit | but the same structures exist. Even in SQL commands, sure it must structure the search lists in a hierarchical manor for efficiency? |
00:36:39 | filwit | surly* |
00:37:06 | dom96 | A database just seems to add another layer of complexity to a file system. |
00:37:09 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
00:37:50 | Araq | filwit: I agree they are the same thing. the interface differs though |
00:38:44 | Araq | and if you look at how the hierarchy is implemented ... it's all overhead over plain IDs or a simple name->ID mapping afaict |
00:39:26 | Araq | the HD surely has no support for a hierarchal structure |
00:39:45 | filwit | HD? |
00:39:55 | filwit | oh, nevermind gotit |
00:40:39 | Araq | also ... computer noobs don't use the hierarchy at all, they store everything on the desktop or whatever |
00:41:05 | Araq | it surely is not natural for them to pack it into subfolders |
00:41:05 | filwit | i wouldn't be so apposed to a tag-base sorting system really |
00:41:24 | filwit | but i think even then, you could have both a flat-list, or a hierarchy |
00:41:33 | filwit | i mean.. it's just how relationships work |
00:41:43 | Araq | the idea of a recursive file system structure has to be learned |
00:41:54 | filwit | if i have dependent things (like spacial transforms), then i want to be able to view them accordingly |
00:42:04 | filwit | and the same goes for files really |
00:42:11 | filwit | project files |
00:42:35 | Araq | that it has to be learned doesn't make it bad of course, but it suggests it's not natural. |
00:43:12 | filwit | that may be a good point actually |
00:43:21 | filwit | most noobs do put everything on the desktop |
00:43:33 | filwit | but i would say that's because they're not inventing much |
00:44:16 | filwit | when you have to compartmentalize your thoughts, sometimes sub-categories are useful |
00:44:27 | Araq | well it's an interface design issue; I still think google is the best example |
00:44:45 | filwit | yeah, i agree |
00:44:45 | Araq | just type what comes to mind and google lists results |
00:45:10 | Araq | I couldn't care less if my flight belongs to "travel" |
00:45:25 | Araq | or "planes" |
00:45:35 | filwit | actually, i think you would |
00:46:00 | filwit | if there where tons of plains, and tons of flights, some algorithms care a lot about their relationships. |
00:46:20 | filwit | though i suppose how that's tackled is by sub-procedure really.. where you isolate each case |
00:46:25 | filwit | so maybe you're right |
00:46:38 | Araq | my point is that google doesn't give me categories to choose from and I am glad it does not. |
00:47:16 | filwit | it does though, 'web', 'images', 'maps', etc |
00:47:36 | filwit | of course, that's not really a "hierarchy" |
00:47:51 | Araq | true but it's slim and it find images anyway |
00:48:02 | Araq | even if I didn't select that |
00:48:56 | * | ics joined #nimrod |
00:49:16 | filwit | right now i'm designing the way my part macros will export data, and how the editor will list scene data. |
00:49:55 | filwit | because i'm not restricting instances to have a single transform, there's not clear-cur hierarchy to work from |
00:50:36 | dom96 | Yes, but when searching you are specifying the category. There are many ambiguities and you usually resolve them by adding extra keywords to your search. |
00:50:38 | filwit | i was thinking about different solutions, but my best idea so far is to make both solutions work (where i can switch the way things are listed) |
00:51:16 | filwit | dom96 <- i agree |
00:51:23 | Araq | dom96: the extra keywords are in no strict hierarchy though |
00:51:46 | filwit | I used a professional stream-service for a company once |
00:52:00 | filwit | it was designed to stream massive amounts of data from a lot of different sources |
00:52:18 | filwit | it didn't use a hierarchy at all, but still had a good way to find stuff (like google) |
00:52:25 | filwit | so i know that way can be effective |
00:52:49 | filwit | i just think hierarchy is also natural too |
00:53:20 | dom96 | I think that tags are more natural. |
00:54:02 | filwit | yeah.. i'm starting to thing that, only i'm starting to think the tags themselves should be what has category |
00:54:06 | dom96 | And the latest Mac OS X got them IIRC |
00:54:26 | filwit | it does |
00:54:30 | dom96 | But then you could get tags which belong to a tag group... |
00:54:34 | filwit | but it's just an additional layer |
00:54:36 | dom96 | and you have a hierarchy again lol |
00:55:24 | filwit | well sorta.. but that's the point, really both systems have to exist for different reasons |
00:55:38 | filwit | so it kinda does make sense to use tags by default |
00:55:46 | filwit | search terms type of thing |
00:55:54 | Araq | just go to amazon and click through their categories. it's significant overhead to determine that Baby lotion belongs to "Lebensmittel & Drogerie" -> "Drogerie & Körperpflege" |
00:56:04 | dom96 | As much as I would like to type in "movie matrix" and have the computer show me a list of the matrix movies on my computer I know that many people are not comfortable with that. |
00:56:12 | Araq | sorry too tired to translate it into english :P |
00:56:26 | Araq | you get the point anyway |
00:56:39 | Araq | it's an incredibly abstract category |
00:56:52 | Araq | really slowing me down |
00:57:13 | * | DAddYE joined #nimrod |
00:57:14 | filwit | yes, but that's really just the way the data list categorized for business reasons (author.book). |
00:57:16 | dom96 | Araq: The question is whether it's quicker to look through the few categories which look "about right" or whether it's faster to look through a list of 100+ specific categories. |
00:57:39 | Araq | dom96: it's faster to just type "baby lotion" |
00:57:51 | Araq | and let the system figure it out what I mean |
00:58:00 | filwit | but what if there's a ton of results? |
00:58:15 | filwit | you have to specify category at that point |
00:58:22 | Araq | *then* you need to ask "do you mean X?" |
00:58:23 | filwit | vanilla baby lotion |
00:58:54 | filwit | i guess it's just another search term, like i just listed it |
00:58:57 | filwit | so whatever |
00:59:07 | dom96 | Someday Aporia will get a way to quickly open files by typing in their name and pressing enter. |
00:59:17 | dom96 | Because the file browser dialog is a piece of crap that needs to die. |
00:59:21 | Araq | dom96: hell yes |
00:59:36 | * | Araq <3 aporia. |
01:00:18 | dom96 | I bet Sublime already has that. |
01:00:52 | filwit | i really like Kate's features |
01:01:02 | filwit | it has Sublime's 100-mile-view |
01:01:12 | filwit | and nice tabulator lines |
01:01:24 | Araq | I guess I should try Kate again |
01:01:40 | * | DAddYE quit (Ping timeout: 264 seconds) |
01:01:49 | * | dom96 guesses he will end up being the only one who uses Aporia soon |
01:01:54 | filwit | one problem though, i can't get it to comment out lines correctly |
01:02:04 | dom96 | and then i'll probably just switch to Sublime |
01:02:26 | filwit | dom96, actually, what i would like to do eventually is have our own text rendered, so it can be used in both Aporia and Hymn |
01:02:26 | Araq | lol don't worry |
01:02:37 | filwit | but that's a whiles off |
01:02:54 | dom96 | I would like to move away from GTK. |
01:03:07 | dom96 | But I have no time at all nowadays. |
01:03:22 | dom96 | And it sucks. |
01:03:29 | filwit | yes, and I want text rendering features that probably neither GTK or KTextEdit's default source-viewers are going to support |
01:03:40 | filwit | yeah, that sux |
01:03:59 | Araq | we'll switch to exhu's UI sooner or later |
01:04:13 | filwit | exhu has a UI? |
01:04:16 | dom96 | or i'll get libcef to work |
01:04:29 | Araq | it's in the works but I don't know the status |
01:04:59 | Araq | it uses x11 and winapi directly afaik |
01:05:05 | Araq | and perhaps wayland now |
01:05:13 | filwit | i've actually had this idea that i can make Hymn both a UI editor and Game editor.. since they both largely follow the same design principles (event/state based) |
01:06:05 | filwit | so i was thinking of making Hymn's UI with Hymn itself, lol (have to finish designing the JSON scene stuff first, then start the visual editor app) |
01:06:43 | filwit | besides, modern UI's need to be OpenGL/DirectX based anyways (by default) |
01:07:06 | filwit | let Gallium3D's LLVM pipe and DX11's CPU mode handle the "no hardware for that" situations |
01:07:17 | filwit | Mac can go suck it |
01:07:24 | filwit | lol |
01:07:31 | dom96 | My biggest worry with these custom UIs is that they always look crap. But I'm sure filwit will fix that. |
01:07:41 | filwit | actually, nevermind.. no Mac is sold with a GPU anyways |
01:08:08 | filwit | dom96: my design is incredibly flexible (still early though) |
01:08:26 | filwit | dom96: it's the same 'mode' system i'll be using for all part instances |
01:09:40 | filwit | dom96: basically you'll use an editor to define an object visually, and what states it has (and the animations between those states.. which i'm calling 'modes'), then the Nimrod script just supplies, by name, what happens on specific events (procs) under what modes. |
01:10:57 | filwit | dom96: the rest is left up to what the part is built out of (remember, part's variables can have behaviors which are injected into the final part machinery, along with the hand-written code) |
01:11:34 | filwit | so for a button, it's just a quad (and or borders, text, etc..) with modes: on, off, hover, default, etc.. |
01:11:58 | filwit | for a game character it's 3d models, physics meshes, and modes: running, jumping, falling, etc |
01:12:06 | filwit | same concept, different goals |
01:12:27 | dom96 | right ok |
01:12:47 | dom96 | I need to sleep |
01:12:48 | dom96 | bye |
01:12:52 | filwit | night man |
01:13:17 | filwit | i'm going to watch Doctor Who, talk to you later folks |
01:16:27 | fowl | still waiting for it to finish downloading |
01:17:15 | EXetoC | legally, yeah? |
01:17:57 | fowl | yeah "legally" |
01:18:02 | fowl | in somalia maybe |
01:18:18 | EXetoC | c(:) |
01:36:31 | EXetoC | are different instantiations of typedesc's supposed to be distinguishable by the type system? I assume the answer is yes. I guess I've hit one of those recent overloading bugs again |
01:37:15 | EXetoC | proc x(typedesc[T]), proc y(typedesc[U])... |
01:39:27 | * | ack006 quit (Quit: Leaving) |
01:40:54 | EXetoC | I was going to use it for defining zero vectors etc, but it might be overkill compared to just defining constants |
01:41:00 | EXetoC | still neat though |
01:41:25 | EXetoC | bye |
01:47:47 | Araq | bye |
01:58:34 | * | DAddYE joined #nimrod |
02:03:09 | * | DAddYE quit (Ping timeout: 272 seconds) |
02:06:07 | * | brson joined #nimrod |
02:11:05 | * | brson_ joined #nimrod |
02:14:29 | * | brson quit (Ping timeout: 248 seconds) |
02:15:56 | * | familiar125 quit (Read error: Connection reset by peer) |
02:20:01 | * | brson_ quit (Quit: leaving) |
02:20:14 | * | brson joined #nimrod |
02:59:55 | * | DAddYE joined #nimrod |
03:04:29 | * | DAddYE quit (Ping timeout: 272 seconds) |
03:23:43 | * | Amrykid quit (Excess Flood) |
03:23:52 | * | Amrykid joined #nimrod |
03:46:42 | * | tylere quit (Disconnected by services) |
04:14:14 | * | filwit quit (Quit: Leaving) |
04:29:02 | * | fowl quit (Quit: Leaving) |
04:39:17 | * | OrionPKM joined #nimrod |
05:00:34 | * | OrionPK quit (Read error: Connection reset by peer) |
05:00:34 | * | OrionPKM quit (Read error: Connection reset by peer) |
05:02:05 | * | DAddYE joined #nimrod |
05:06:14 | * | DAddYE quit (Ping timeout: 240 seconds) |
05:42:26 | * | fowl joined #nimrod |
05:58:50 | * | DAddYE joined #nimrod |
05:59:07 | * | DAddYE quit (Remote host closed the connection) |
05:59:13 | * | DAddYE joined #nimrod |
06:01:22 | * | Associat0r quit (Quit: Associat0r) |
06:21:40 | * | reactormonk quit (Ping timeout: 245 seconds) |
06:23:04 | * | reactormonk joined #nimrod |
06:48:03 | * | xenagi quit (Quit: Leaving) |
06:48:16 | * | brson quit (Quit: leaving) |
07:35:38 | fowl | where is csources.zip |
07:36:32 | fowl | nvm |
08:09:57 | * | fowl quit (Quit: Leaving) |
08:12:54 | * | fowl joined #nimrod |
08:38:53 | * | DAddYE_ joined #nimrod |
08:41:26 | * | DAddYE quit (Ping timeout: 240 seconds) |
08:51:52 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
10:32:52 | * | fredmorcos joined #nimrod |
10:44:44 | * | fredmorcos quit (Quit: Leaving) |
11:07:13 | * | Jackneill joined #nimrod |
11:09:36 | * | t4nk638 joined #nimrod |
11:13:41 | * | t4nk638 quit (Ping timeout: 250 seconds) |
11:14:09 | * | Associat0r joined #nimrod |
11:18:32 | * | Associat0r quit (Client Quit) |
11:26:01 | * | Associat0r joined #nimrod |
11:26:01 | * | Associat0r quit (Changing host) |
11:26:01 | * | Associat0r joined #nimrod |
11:30:47 | * | DAddYE_ quit (Remote host closed the connection) |
11:40:50 | * | BitPuffin joined #nimrod |
11:49:33 | * | BitPuffin is going through the logs |
11:49:45 | BitPuffin | ping zahary |
11:51:00 | BitPuffin | Araq: I think the notion of a database like filesystem sounds interesting |
11:51:35 | BitPuffin | But I find it hard to wrap my brain around because I'm so used to the folder tree system |
11:53:02 | BitPuffin | even though I use databases lol :P |
11:53:50 | BitPuffin | I've got something though that actually adds points to your side of the argument that it is actually more natural |
11:54:52 | BitPuffin | people who's got a huge collection of files, say sound designers etc use software that they can just search through their library like (sound miner is an example of such software), and I guess that kind of proves that the folder structure isn't good enough in a way |
11:56:03 | BitPuffin | although I guess with a little bit of command line magic one can do just as well of a job |
11:58:03 | dom96 | hi |
11:59:46 | BitPuffin | hey dom96 |
11:59:51 | dom96 | hey BitPuffin |
12:00:00 | BitPuffin | wassaaa |
12:01:51 | dom96 | The usual: making pizza for breakfast because why not and depressed because it's Sunday already :P |
12:02:28 | BitPuffin | oh come on you always eat what I wanna eat |
12:02:42 | BitPuffin | All I'm gonna be able to make today is porridge :( |
12:03:25 | BitPuffin | too poor for pizza |
12:04:08 | dom96 | aww poor you |
12:04:22 | BitPuffin | poor me indeed |
12:05:07 | BitPuffin | And I don't even know what I'm gonna do xD I don't have any idea how to fix the bug that would make my workaround to the workaround work |
12:06:04 | EXetoC | just work around it |
12:10:15 | BitPuffin | EXetoC: there is no way to work around this one |
12:17:02 | EXetoC | :/ |
12:19:39 | BitPuffin | EXetoC: I think you may have been hit by a similar bug after I left yesterday |
12:20:16 | BitPuffin | https://github.com/Araq/Nimrod/issues/686 |
12:20:42 | EXetoC | yes it seemed similar |
12:21:31 | BitPuffin | And it's a show-stopper, I KNEW I should have used ocaml :P |
12:21:33 | BitPuffin | (kidding) |
12:21:54 | * | BitPuffin waits for Araq's fist to reach my face |
12:22:18 | BitPuffin | s/my/his |
12:22:21 | EXetoC | except it only failed when trying to call one of the overloads, similar to my other error |
12:22:45 | BitPuffin | EXetoC: that's weird |
12:22:48 | BitPuffin | have you reported it? |
12:23:16 | BitPuffin | I also had some problems with ambiguous calls, but to fix that I just had to annotate the variable with the type |
12:25:05 | EXetoC | I was told that it was a known issue, but I'll see if it has been reported |
12:25:15 | BitPuffin | But in all seriousness, it's kind of a panicky situation, I have set a strict deadline for this project and need to get the work done :/ |
12:25:58 | EXetoC | >.< |
12:26:47 | BitPuffin | But yeah, I can work on audio or something while waiting and hope that there isn't any show stopper there, but how do I know that this is gonna be fixed on time even :P lol |
12:32:13 | EXetoC | let's donate $5 each and then tell him what to do next |
12:32:19 | EXetoC | have you decided on an audio lib? |
12:40:31 | BitPuffin | yeah perhaps :P but then we'd all ask for different things lol |
12:40:40 | BitPuffin | problem is that I don't have much moneys |
12:40:43 | BitPuffin | yeah I think so |
12:40:49 | BitPuffin | I think I'll go with libao |
12:47:03 | BitPuffin | yeah I think I'll play with audio today, I'll have faith and hope that the gods (Araq and zahary) have mercy |
12:48:51 | BitPuffin | If not I guess there is one final "workaround" (not really) |
12:50:47 | BitPuffin | And that would be to define the submatrix operator only for 2x2 and 4x4 (because 2x2 works for some weird reason) as the submatrix thing is really only needed for 4x4 determinands, the lower ones can (and should) be hardcoded |
13:10:40 | EXetoC | ok |
13:19:32 | EXetoC | gl&hf. l8r |
13:29:25 | BitPuffin | see ya |
13:40:00 | * | zahary quit (Read error: Connection reset by peer) |
13:40:07 | * | zahary joined #nimrod |
14:36:16 | * | CarpNet joined #nimrod |
15:06:02 | * | OrionPK joined #nimrod |
15:19:14 | * | OrionPK_ joined #nimrod |
15:23:49 | NimBot | nimrod-code/babel master d534538 Grzegorz Adam Hankiewicz [+1 ±1 -0]: Splits main readme.... 4 more lines |
15:23:49 | NimBot | nimrod-code/babel master c761500 Dominik Picheta [+1 ±1 -0]: Merge pull request #15 from gradha/pr_splits_docs... 2 more lines |
15:26:50 | * | Hannibal_Smith joined #nimrod |
16:39:14 | Varriount | Araq, any idea where in the compiler inner iterators (iterator procs that resides within another procedure) are lifted/handled? |
16:40:10 | Araq | lambdalifting.nim |
16:40:36 | Araq | but iirc I never implemented inner .closure iterators |
16:40:54 | Araq | and lambdalifting surely is fun |
16:41:03 | Varriount | ... which explains why they cause a gcc syntax error when used. |
16:41:26 | Araq | well there is also a general LL bug |
16:41:35 | Araq | haven't looked into it yet |
16:43:30 | Varriount | Are any of the lambdalifting.nim procedures for regular procedures also used for iterator procedures? |
16:48:17 | Araq | no but it's "easy" to do |
16:48:39 | Araq | the code in general is quite generic |
16:49:56 | Araq | have fun, lambdalifting is the best part of the compiler. Took me 2 weeks to write these 800 lines of code and 2 weeks of debugging them and it's still unfinished and has bugs |
16:52:32 | Araq | isInnerProc needs to deal with skIterator |
16:52:42 | * | mflamer joined #nimrod |
16:57:25 | Araq | but only if s.kind == skIterator and s.typ.callConv == ccClosure, otherwise the iterator is inlined later and doesn't require lambda lifting |
16:58:45 | * | mflamer quit (Ping timeout: 248 seconds) |
17:15:04 | Varriount | Araq, yay for corner cases! |
17:16:36 | Araq | also you need to ensure that the environments are merged properly |
17:16:42 | Varriount | From what I can see, the iterator lifting procedure doesn't capture any environment variables, unlike the lambda lifting procedure. |
17:16:59 | Araq | in particular the state field needs to be the first |
17:17:05 | Araq | so that's at offset 0 |
17:17:21 | Araq | Varriount: we need both |
17:17:36 | Araq | ordinary lambda lifting to capture outer variables |
17:17:43 | Araq | and then later the state transformation |
17:18:12 | Araq | I mean the state machine generation |
17:19:14 | Varriount | Sorry for the slow response, I'm on my laptop, with a bad connection to my desktop, its irc client, and editor. |
17:20:58 | Varriount | Araq, so, for inner iterators, both liftLambda and liftIterator need to be run on the node and its' body, and the environments need to be merged properly?, |
17:21:23 | Araq | yeah |
17:23:51 | * | OrionPK_ left #nimrod (#nimrod) |
17:28:32 | * | OrionPKM joined #nimrod |
17:28:40 | * | fredmorcos joined #nimrod |
17:30:11 | Varriount | Araq, so where/what is the lifted closure iterators environment? |
17:30:57 | OrionPKM | yay working on raspberry PI :) |
17:31:11 | Varriount | I see an environment thing generated for lifted procs, but not for lifted iterators. |
17:36:18 | Varriount | Or do you mean environment as in, the generated tree? |
17:36:30 | Araq | no |
17:36:34 | Araq | the env |
17:38:42 | * | OrionPKM quit (Remote host closed the connection) |
17:38:44 | * | fredmorcos quit (Quit: Leaving) |
17:48:24 | * | OrionPKM joined #nimrod |
17:57:56 | Varriount | Araq, so, I see that closure iterators are already passed through liftLambdas, so is it now a matter of ensuring that the closure iterator's environment is merged correctly? |
17:59:06 | * | ics joined #nimrod |
18:00:13 | Araq | it's actually rather easy to "merge" correctly |
18:00:30 | Araq | you only need to ensure the ':state' field is the first one |
18:01:54 | OrionPK | argh |
18:01:58 | OrionPK | that friggin 12:00 bug :P |
18:02:00 | * | OrionPKM quit (Remote host closed the connection) |
18:02:32 | OrionPK | 12:00 - 1:00 = time to turn off ircfamiliar :P |
18:05:06 | bastian_ | what is the operator to perform logical shift? shl/shr are only defined for signed integers and perform arithmetic shift |
18:06:13 | Araq | * or div 2^n |
18:06:30 | Araq | I wonder when logical shift is ever needed |
18:06:57 | Araq | some guy wrote an lshr with the help of 'emit' |
18:07:03 | Varriount | I always wonder whenever shifting is needed. |
18:07:23 | Araq | shifting is necessary for bit extraction |
18:07:37 | Araq | but I have never needed "logical shifting" |
18:08:20 | bastian_ | positioning bits in a byte |
18:09:40 | bastian_ | shifted right and it was 'filling' with ones, wondered what was going on, then noticed it's a seq[int8] |
18:11:00 | bastian_ | (e.g 0b1000000 shr 2 == 0b11100000) |
18:14:20 | Araq | huh? shr should treat everything as unsigned |
18:14:55 | * | OrionPK quit (Read error: Connection reset by peer) |
18:16:15 | bastian_ | well, did that initially, even though bitset.nim is using seq[int8], then noticed none of the bitwise operations are defined for unsigned integers |
18:16:40 | bastian_ | it wasn't a problem ... until now |
18:16:40 | Araq | import unsigned |
18:17:00 | Araq | and then you have shr/shl for uint |
18:17:10 | * | dymk quit (Ping timeout: 264 seconds) |
18:17:41 | bastian_ | oh, well, didn't see that anywhere. thanks! |
18:18:31 | bastian_ | "To discourage users from using unsigned integers" heh :) |
18:19:01 | bastian_ | so again to prevent misuse, nice |
18:19:21 | bastian_ | just didn't know where to look |
18:23:41 | * | dymk joined #nimrod |
18:30:21 | bastian_ | and to get an uint8 from any integer: toU8 still returns a signed integer, so i'll need cast[uint8]? |
18:31:01 | Araq | I think you should use a type conversion instead uint8(x) |
18:32:41 | bastian_ | ah, ok |
18:41:11 | * | Amrykid quit (Changing host) |
18:41:11 | * | Amrykid joined #nimrod |
18:52:45 | bastian_ | everything seems to be working now, great |
18:54:53 | bastian_ | and once unsigned is imported, `==` works also on seq[uint8], neat |
19:01:47 | EXetoC | awesome |
19:03:41 | dom96 | Wouldn't it make sense to put the unsigned types in the unsigned module? |
19:04:32 | Araq | well kind of |
19:05:07 | Araq | my idea was that people want to use uint32 etc. for wrapping but then don't compute with them |
19:05:08 | EXetoC | and the type classes in system.nim? should system import unsigned then? |
19:05:24 | EXetoC | ok |
19:06:50 | dom96 | well but then it's really confusing for new people as to why == is not there for uint |
19:07:57 | dom96 | I think it make sense to keep them together. |
19:08:27 | * | filwit joined #nimrod |
19:09:15 | filwit | dom96: last night I started playing around with Aporia's nimrod.lang file |
19:09:31 | filwit | dom96: i have gotten it relatively to the point of my Kate one |
19:10:50 | EXetoC | I think it might be confusing either way, so the documentation needs to be clear on this |
19:11:02 | EXetoC | not that I've checked if it is |
19:11:06 | filwit | dom96: i plan on making a couple new color schemes and then sending you a pull-request, but I'll want to know exactly what you do and don't like (i have it color PascalCase different, for example). |
19:12:11 | filwit | dom96: however, i noticed last night that your lang file uses this regex idiom everywhere: (i|I)_*(n|N)_*(t|T)_* |
19:12:30 | filwit | dom96: you don't actually need to do that, since you can enable case-insensitivity |
19:12:59 | filwit | dom96: just letting you know i guess |
19:15:14 | dom96 | Yes, I know. Araq wrote that not me :P |
19:15:28 | dom96 | However, the _* is still needed for style insensitivity. |
19:16:10 | filwit | ahh, so Araq is the culprit of this syntax.. that makes sense :P |
19:17:06 | Araq | lol as if I wrote it |
19:17:11 | Araq | obviously I generated it |
19:17:34 | filwit | yeah i was thinking it was generated (cause of the (1|1) everywhere) |
19:20:15 | filwit | i plan on making three new color schemes: CottonCandy (the colors from my Kate), MonoNim? (stolen from MonoDev's new C# dark-theme.. it's pretty), and NimStudios? (classic visual-studios colors) |
19:20:53 | filwit | but if you have a request or color suggestion, place them now! |
19:21:30 | filwit | i was thinking about making a "Coffee" flavor too.. but i need to find a good reference |
19:21:34 | Varriount | Araq, where is the 'state' field? I changed the isInnerProc to deal with inner closure iterators correctly, however I'm now getting an error about parameter "env" not being initialized. |
19:21:36 | EXetoC | vim-hybrid and solarized maybe |
19:21:48 | filwit | isn't solarized already there? |
19:21:59 | filwit | i'll look up vim-hybrid |
19:22:39 | filwit | hmm... vim-hybrid is pretty, but looks a lot like the MonoDev dark-colors |
19:23:31 | EXetoC | ok |
19:25:14 | dom96 | copy some of the pygments styles |
19:25:35 | filwit | my reg-ex are pretty cool actually.. i have one that colors anythingFollowedBy( backets ) as unique, also "a THIS b" is colored like if/else/etc.. and "yourMacro ...:" is colored like type/var/etc |
19:25:45 | filwit | pygments? i'll look it up |
19:26:37 | filwit | pygment already export Nimrod lang files? |
19:26:50 | dom96 | hrm? |
19:27:06 | filwit | http://pygments.org/ |
19:27:10 | dom96 | pygments is a syntax highlighter. |
19:27:15 | filwit | ahh... nevermind |
19:27:35 | filwit | thought it made a common color file or something |
19:28:12 | filwit | where are their styles though? |
19:28:40 | dom96 | https://github.com/richleland/pygments-css |
19:29:39 | dom96 | my blog uses monokai IIRC |
19:30:01 | filwit | yeah that one was nice |
19:30:21 | EXetoC | "$#\n#$\n#$\n#$" % [$o.x, $o.y, $o.z, $o.p] # strutils.nim(1108) invalidFormatString |
19:30:25 | EXetoC | hm |
19:31:28 | dom96 | It's $# not #$. |
19:31:54 | EXetoC | -.- |
19:32:17 | EXetoC | vim yank fail |
19:33:05 | filwit | the only thing i don't know how to do in .lang files is highlight the proc/type/etc names.. |
19:34:35 | dom96 | they are already highlighted as keywords |
19:34:38 | filwit | in my screenshot: http://reign-studios.net/philipwitte/screenshots/arch-win-mac2.png you can see that 'runGame' is very distinct (like github) |
19:35:13 | filwit | that's really nice when browsing a lot of code (since it's one of the most important separations |
19:35:30 | dom96 | oh I see. |
19:35:39 | filwit | the problem is regex is always forward, not backwards |
19:35:54 | filwit | i can't say "highlight this word after 'proc '" |
19:35:57 | dom96 | you could use a lookbehind maybe |
19:36:08 | filwit | i can only say "highlight this word if it's followed by ...", etc |
19:36:20 | filwit | what's a lookbehind? |
19:36:33 | filwit | i mean, is that regex or .lang specific? |
19:36:51 | dom96 | regex |
19:37:08 | filwit | in the Kate one, i start a new context when 'proc' is found, then highlight the next word, then break |
19:37:20 | filwit | i don't know how to set that up in .lang, though i'm sure it's possible |
19:37:28 | * | olahol joined #nimrod |
19:37:50 | * | Varriount wants a PEG to Regex translator |
19:38:24 | filwit | i never learned exactly what PEG was |
19:38:34 | filwit | these things rarely effect my work |
19:38:35 | Varriount | Parsing Expression Grammer |
19:38:42 | filwit | well i know that much... |
19:38:59 | filwit | it's just a different kind of regex? |
19:39:22 | Varriount | A parsing language much more suited for the parsing of contextual formats, such as programing languages |
19:40:14 | Varriount | Or an EBNF to Regex translator, that would be fine too. |
19:40:55 | dom96 | filwit: Something like: (?<=proc\s).+ |
19:41:09 | filwit | woah... |
19:41:22 | filwit | ?<= is real regex? |
19:41:42 | dom96 | Yeah, but i'm not sure if everything supports it. |
19:41:56 | filwit | i've been looking at MSDN for reference (web stuff), i guess i'll try it |
19:42:23 | filwit | that's really useful if it works |
19:42:29 | dom96 | this is really good btw: http://regex101.com/ |
19:42:48 | filwit | thanks |
19:43:39 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
19:46:07 | filwit | not sure it works... |
19:47:15 | filwit | gtksourceview is having issues with it |
19:47:16 | filwit | damn |
19:49:25 | fowl | proc\s([^*\[]+) |
19:49:59 | filwit | the problem fowl, is that 'proc' will get highlighted with that |
19:50:14 | filwit | actually.... that could work... |
19:50:37 | filwit | i could just re-highlight 'proc' afterwards (by adjusting the regex order) |
19:50:59 | Varriount | ^ Why I hate that editors use regex for highlighting |
19:53:45 | fowl | filwit, there are captures in the .lang, why should it highlight proc if its not captured |
19:53:46 | dom96 | what should they use? |
19:54:22 | dom96 | indeed, you can probably select the capture group. |
19:54:57 | filwit | fowl: i'm not that experienced with .lang stuff. How do i distinguish what get's captured and what doesn't? |
19:59:29 | filwit | btw, is there a reason varargs is written with '?' like this: (v_?a_?r_?a_?r_?g_?s_?) instead of '_*' like every other keyword? |
20:00:02 | filwit | is there some special rule where varargs can only have single underscores in Nimrod? or is this a bug? |
20:01:16 | dom96 | oh, I changed that. |
20:01:23 | dom96 | Because actually _* is incorrect :P |
20:01:31 | filwit | how so? |
20:01:35 | filwit | * means 0 or more times |
20:01:47 | filwit | ? means 1 or 0 times |
20:01:55 | dom96 | You can't have multiple consecutive underscores or else the compiler will complain. |
20:02:15 | filwit | ah, okay, so everything should be _? |
20:02:20 | dom96 | ya |
20:02:21 | filwit | i didn't know that about Nimrod either |
20:02:26 | filwit | k, will fix |
20:03:07 | Varriount | Also, you can't have an identifier that starts with an underscore. |
20:03:32 | fowl | filwit, () is a capture group |
20:03:58 | filwit | fowl: yeah i know, but that's now how the .lang files work |
20:04:25 | filwit | i have <match> and <keyword>, both which match their entire reqex contents |
20:05:35 | filwit | so i can't say "proc\s+(\w+)" match $0... at least i don't know how to if it's possible |
20:06:10 | filwit | maybe there's some xml attribute i can tag on which isolates the highlighting to a single capture group, idk |
20:20:03 | fowl | filwit, well there must be some reason the keywords use (A|a) instead of [Aa] |
20:20:44 | filwit | ? |
20:20:59 | fowl | () is capture, [] is a character search |
20:21:12 | filwit | well those are different when you add '*' to the end |
20:21:19 | filwit | i think... |
20:21:35 | filwit | maybe not actually |
20:21:58 | filwit | (\w\.|\S\b.)* |
20:22:02 | filwit | for instance |
20:22:39 | filwit | the problem with trying that with [] is that [] removes special characters (again, not an expert here) |
20:22:39 | fowl | thats just a bunch of matches |
20:23:00 | filwit | no, it's two match, separated by the | |
20:23:37 | filwit | but in [], all the '\' chacters, etc, don't do anything special (it literally matches '\') |
20:23:40 | filwit | characters* |
20:24:02 | filwit | that's the difference between the two i think |
20:24:11 | fowl | filwit, not usually |
20:24:18 | fowl | you still need \\ for \ instide [] |
20:24:39 | filwit | yeah, but i don't think that applies to everything |
20:24:49 | filwit | at least not on some versions of regex? |
20:25:29 | filwit | idk, i'll have to try later. either way, they're basically the same thing |
20:26:42 | fowl | lol |
20:27:48 | dom96 | the | means 'or' |
20:27:56 | dom96 | so match capital A or match small a. |
20:31:04 | filwit | g'damnit .lang.. y u so difficult!? |
20:31:59 | dom96 | maybe try asking in GIMPNet/#gedit |
20:32:17 | filwit | yeah good point |
20:44:05 | filwit | no one is active on #gedit... |
20:46:44 | dom96 | patience :P |
20:47:18 | filwit | yeah.. |
20:47:26 | filwit | #nimrod has more people than #gedit |
20:47:31 | dom96 | but actually it is pretty quiet in there |
20:47:48 | dom96 | well, last message was an hour ago |
20:47:51 | dom96 | so it's not that bad |
20:48:44 | filwit | oh well, i can always start making the colors and come back to this |
20:56:18 | Varriount | Araq, ping |
20:56:40 | Araq | pong |
20:57:09 | Varriount | Araq, why would the compiler complain about "env" being an uninitialized parameter? |
20:57:43 | Varriount | I mean, what normally initializes the env parameter for closures in the first place? |
20:57:51 | Araq | dunno, that means you did something wrong |
20:58:39 | Varriount | All I did was change isInnerProc to report true for iterator's with closure calling conventions. |
21:25:44 | * | DAddYE joined #nimrod |
21:28:35 | * | Hannibal_Smith quit (Quit: Sto andando via) |
21:36:15 | * | Jackneill quit (Remote host closed the connection) |
21:46:38 | * | mkb quit (Remote host closed the connection) |
21:59:24 | Varriount | Araq, I see what you mean by lambdalifting being "fun" |
21:59:33 | * | ics joined #nimrod |
21:59:44 | Varriount | How many painkillers did you go through while writing this stuff? |
22:00:19 | Araq | iirc I had holidays |
22:00:40 | Araq | and obviously writing lambda lifting algorithms is what I do for fun |
22:02:12 | Varriount | I just wish I had an easy way to print the data structures the compiler uses. I can use debug for some of the nodes, but that doesn't print everything, and won't work for structures that merely contain some nodes. |
22:03:29 | Araq | ast.nim contains almost everything important |
22:07:02 | Varriount | Araq, any way to get gdb to actually print out nimrod data structures, instead of just pointers? |
22:07:25 | Araq | well I use 'debug' |
22:07:54 | Varriount | That doesn't work for environment structures. :/ |
22:08:00 | Araq | you can try 'repr' for arbitrary structures |
22:08:42 | Varriount | Araq, the problem with repr is that if *any* of those arbitrary structures contain a node, things hang. |
22:09:06 | Varriount | Though, I'll try, thanks for the tip. |
22:09:47 | Araq | really? interesting |
22:10:14 | Araq | I guess we need a recursion limit for 'repr' |
22:11:52 | * | BitPuffin quit (Ping timeout: 264 seconds) |
22:40:24 | * | brson joined #nimrod |
22:40:24 | * | brson quit (Client Quit) |
22:41:32 | * | brson joined #nimrod |
22:46:03 | * | ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
22:46:09 | Varriount | Araq, under what circumstances would an inner procedure have two environment variables? |
22:46:35 | Varriount | Or rather, an inner iterator procedure. |
22:47:11 | Araq | well if the code that adds the 'env' doesn't check whether an 'env' already exists |
22:48:48 | * | xenagi joined #nimrod |
23:23:44 | * | CarpNet quit (Quit: Leaving) |
23:34:16 | * | apotheon joined #nimrod |
23:34:16 | * | apotheon quit (Changing host) |
23:34:16 | * | apotheon joined #nimrod |
23:37:01 | * | xenagi quit (Read error: Connection reset by peer) |
23:38:38 | * | apotheon quit (Client Quit) |
23:38:58 | * | apotheon joined #nimrod |
23:39:03 | * | apotheon quit (Changing host) |
23:39:03 | * | apotheon joined #nimrod |
23:40:05 | * | apotheon quit (Client Quit) |
23:40:23 | * | apotheon joined #nimrod |
23:40:23 | * | apotheon quit (Changing host) |
23:40:23 | * | apotheon joined #nimrod |
23:45:11 | * | apotheon quit (Client Quit) |
23:45:29 | * | apotheon joined #nimrod |
23:45:29 | * | apotheon quit (Changing host) |
23:45:29 | * | apotheon joined #nimrod |
23:57:18 | Varriount | Araq, currently, where/what is the environment for closure iterators? Is it the contexts, or what? |
23:58:09 | Varriount | I have only a faint idea on which structures need to be merged for inner-closure iterators. |