00:00:12 | Araq | filwit: what about the fonts you used? |
00:00:23 | Araq | are these standard fonts? |
00:01:43 | dom96 | oh well, you can't please everyone I guess. |
00:01:54 | filwit | Sans for the regular text, and Discognate (http://www.1001freefonts.com/dfonts6.php) for nimrod and a the ".expressive .efficient .elegant" |
00:02:25 | filwit | i like the blue better too, dom, but i don't mind the gold either |
00:03:01 | filwit | i just like the "cool" look, but honestly, the goal almost first the crown and "nimrod" (first king) better |
00:03:03 | fowl | filwit: cool design |
00:03:09 | filwit | thanks fowl |
00:03:15 | fowl | i like the dark background its a lot easier on the eyes |
00:03:41 | filwit | good to hear :) |
00:05:59 | dom96 | Yeah, I suppose gold makes sense with the crown. |
00:08:35 | fowl | if i change some stuff in evals.nim whats the proper way to test it |
00:08:46 | Araq | now the new design only needs a sunset picture in the background ... |
00:08:54 | fowl | just nimrod c koch; ./koch boot .. ? |
00:09:04 | Araq | fowl: I found tests/run/tmacro2 useful |
00:09:51 | Araq | run 'nimrod c -r tests/run/tmacro2' after bootstrapping |
00:10:04 | Araq | and check the output is still the same |
00:10:09 | fowl | ok |
00:11:11 | Araq | now the new design only needs a sunset picture in the background ... nah, just kidding :P |
00:11:35 | filwit | okay.. for a second there i thought you where serious, lol |
00:11:52 | filwit | i was gonna say, gold logo on sunset picture doesn't work |
00:12:30 | filwit | we should have an About page, which talks about the programmers, and you can put a picture of a sunset on yours |
00:13:16 | fowl | hrm |
00:13:27 | * | fowl didnt realize there was `continue` >_> |
00:13:55 | filwit | i always wanted to rename "continue" to "pass" |
00:13:59 | dom96 | No, what we need is some embarrassing picture of Araq :P |
00:14:15 | * | filwit supports Dom's notion |
00:14:19 | dom96 | :D |
00:15:00 | fowl | i'd rather `next` than `pass` |
00:15:09 | filwit | ^ good point |
00:15:13 | fowl | i think pass would confuse anybody who's used python before |
00:15:27 | filwit | but 'next' is a common variable name... it might get annoyhing |
00:15:31 | filwit | annoying** |
00:16:22 | dom96 | how about 'skip' ? |
00:16:34 | filwit | yeah, that works best actually |
00:16:44 | filwit | anyways... |
00:16:52 | filwit | one of the most pointless keywords to rename |
00:16:53 | filwit | lol |
00:17:24 | Araq | continue is perfectly fine |
00:17:50 | filwit | any keyword over 4 character long is ugly |
00:17:58 | filwit | (jk) |
00:18:04 | filwit | (sorta) |
00:19:22 | filwit | What is the Nimrod equavalent to 'stdin.byLine'? |
00:19:33 | filwit | equivalent* |
00:19:52 | fowl | should be stdin.byline |
00:20:00 | Araq | stdin.lines |
00:20:20 | filwit | k |
00:21:16 | filwit | fowl: i disagree.. byLine sounds like an action.. 'lines' describes that it's just a sequence of lines |
00:22:38 | fowl | sry i thought you were asking about the stdin part |
00:23:42 | filwit | it should be: "Console.lines" |
00:23:53 | filwit | ultimately, that is the easiest to understand |
00:24:00 | filwit | :P |
00:24:08 | Araq | it's weird |
00:24:29 | Araq | "input.lines" perhaps |
00:24:35 | Araq | or "readInputLines" :P |
00:25:02 | filwit | eh.. Console.inputLines or ConsoleInput.lines or Console.input.lines |
00:25:06 | Araq | btw I never think Console.WriteLine(x) |
00:25:18 | Araq | I think: echo x |
00:25:23 | Araq | or x.echo |
00:25:30 | Araq | or perhaps just: x!!! |
00:25:36 | filwit | Console.write(x) <-- best |
00:25:45 | filwit | Console.writeInline(x) |
00:25:48 | Araq | Console is an implementation detail |
00:25:53 | filwit | yes |
00:25:59 | filwit | its descriptive |
00:26:02 | Araq | so it's not natural |
00:26:06 | Araq | it's annoying |
00:26:07 | filwit | no one will guess what is going on in the code |
00:26:08 | fowl | proc `>>`*(some) = echo($some) |
00:26:09 | fowl | :D |
00:26:14 | fowl | >>42 |
00:26:28 | Araq | echo 42 |
00:26:32 | Araq | works ;-) |
00:27:17 | Araq | perhaps it's: 42.echo(stderr) instead? |
00:27:25 | fowl | i want to hack the compiler to do levenshtein distance to resolve symbols so i can do ehoc 42 |
00:28:16 | filwit | hahaha |
00:28:35 | Araq | you think it's natural to attach the 'write' to the console and not to the data that is to be written |
00:28:49 | filwit | yes, you are writing to the Console |
00:29:02 | Araq | I don't agree it's particularly natural |
00:29:28 | filwit | there is a dynamic between Object/Params |
00:29:50 | filwit | obviously you cant have every object contain a function that does something only to itself |
00:29:57 | filwit | x.writeToConsole() |
00:30:16 | filwit | cause even then you're still defining "Console" |
00:30:51 | Araq | *shrug* it conflicts with the infix |
00:31:08 | Araq | notation: if x.matches(regex) ... |
00:31:44 | Araq | matches is part of the regex type and yet you want it to be the second param |
00:31:44 | filwit | i disagree with that syntax |
00:32:00 | filwit | wait.. maybe i'm confused |
00:32:13 | filwit | what is 'x' in your example, a string or a regex? |
00:32:20 | Araq | a string |
00:32:41 | Araq | if X matches PATTERN is the logic |
00:32:54 | Araq | you can't have PATTERN matches x IMO |
00:33:01 | filwit | well see, in this case, you're searching for something inside the string, correct? |
00:33:12 | filwit | in the case of the Console, you're writing too the Console |
00:33:16 | filwit | so it should be first |
00:33:24 | fowl | it is first |
00:33:28 | fowl | stdout.write "hi" |
00:33:42 | filwit | yes i know |
00:33:52 | Araq | yes it's first, it's also annoying enough so that we have echo :P |
00:34:02 | fowl | console is ambiguous anyways, is it stdout, stdin, stderr? maybe its a curses interface |
00:34:23 | filwit | fowl: you cater to the common situation |
00:34:41 | filwit | Console is easy to understand and has a broad meaning of "the terminal" |
00:34:41 | Araq | filwit: 'matches' should be in the regex class |
00:34:55 | Araq | and yet you want it to be the second param |
00:35:11 | filwit | fowl: so "Console.write(...)" or Console.lines() should mean stdout, stdin repectively |
00:35:12 | Araq | you can't put it into the string class |
00:35:33 | filwit | Araq: i think i'm confused about your example |
00:35:52 | filwit | Araq: x.matches(regex) matches a patter in the string, based on regex right? |
00:36:19 | filwit | Araq: so in this case, the string is the most important element, the regex is just the pattern |
00:36:23 | Araq | "identifier".matches("[a-z]") |
00:36:40 | filwit | yes, "identifier" is what you're searching against |
00:37:04 | filwit | it's like saying: number += othernumber |
00:37:11 | filwit | number is being modified |
00:37:13 | Araq | it may be more important but it's fundamentally wrong to attach 'matches' to the string class |
00:37:25 | filwit | you don't say: othernumber.inc(othernumber) |
00:37:33 | filwit | sorry: othernumber.inc(number) |
00:37:42 | Araq | and nothing is modified in my example :P |
00:37:53 | filwit | Araq: you're right |
00:38:05 | filwit | Araq: ultimately i wouldn't want there to be that... |
00:38:20 | filwit | it should be: Regex.find(x, regex) : string |
00:38:38 | fowl | thats what it is homie |
00:38:43 | fowl | re.match(x, regex) |
00:38:55 | filwit | re is what? |
00:38:58 | filwit | module name? |
00:38:59 | fowl | the regex module |
00:39:04 | filwit | that's horrible |
00:39:09 | Araq | Regex.find(x, regex) is horrible |
00:39:14 | filwit | i use 're' as a local var name |
00:39:20 | fowl | you should be able to. |
00:39:43 | fowl | you only need the module name if there are two match(string, re) functions |
00:39:47 | filwit | module names and Classes (and their functions) should make an attempt to describe what they do |
00:39:58 | filwit | so that others can understand (at a glance) what the code is doing |
00:40:25 | filwit | using common words and full names makes the learning curve much flatter |
00:40:26 | fowl | yeah, i wouldnt expect parsing utilities to be in a module called parseutils |
00:40:31 | fowl | streams? dont put them in "streams" |
00:40:47 | fowl | make it OutputStringStream and InputStringStream |
00:40:55 | fowl | afk |
00:41:01 | filwit | i didn't say that |
00:41:16 | filwit | i said they should be descriptive, not overly descriptive |
00:42:02 | Araq | filwit: the problem is that you have: x.append(y) because the verb happens to have the right subject/object ordering |
00:42:29 | Araq | but then you have Regex.matches(x, y) when the verb doesn't |
00:42:30 | filwit | in that example, y is being appended to x? |
00:42:39 | Araq | yeah |
00:43:10 | Araq | why not Seq.append(x, y)? because English 'append' happens to fit |
00:43:15 | filwit | well the Regex.match(x, y) is one justification or Extension types |
00:43:40 | filwit | you could justify using UFCS in that situation |
00:43:57 | filwit | to extend the functionality of a string in some cases |
00:44:10 | Araq | we call it "method call syntax" btw |
00:44:18 | filwit | okay |
00:44:23 | Araq | because UFCS is not "uniform" at all |
00:44:35 | filwit | i always thought it ments "universal" |
00:44:46 | Araq | x.f(y) is much less uniform than f(x, y) or (f x y) |
00:44:51 | Araq | oh ... |
00:45:15 | Araq | perhaps you're right and it stands for "universal", I'm not sure |
00:45:41 | filwit | yeah, idk |
00:46:04 | Araq | anyway, my point is valid |
00:46:22 | Araq | 'f' is the special thing it deserves to come first |
00:46:53 | filwit | person.run() |
00:46:57 | filwit | not run(person) |
00:47:12 | filwit | person.jump(10) |
00:48:02 | filwit | and more importantly (even if you prefer jump(person, 10)) is that you find 'jump' through person, because that's your context |
00:48:15 | filwit | person is the acting entity |
00:48:26 | filwit | it's the noun, jump is the verb |
00:48:36 | filwit | 10 is just the details |
00:48:48 | Araq | 10.days.later |
00:49:19 | filwit | Date.in(10, Days) |
00:49:54 | Araq | 'in'? |
00:50:28 | filwit | yeah as in "from now" |
00:50:34 | filwit | but yeah, kinda confusign |
00:50:55 | filwit | maybe better to say: Date.future(10, Days) |
00:51:00 | filwit | 'Days' is an enum |
00:51:21 | Araq | so your 'verb' is 'future' :P |
00:51:36 | filwit | lol.. well this is code, not english |
00:51:50 | Araq | ah now we're getting somewhere :P |
00:51:52 | fowl | 10.days.fromNow would be a better example, 10.days being a measure of time for 10 days and fromNow(time) adding time to now() |
00:52:04 | filwit | you could always do: Date.fromNow(10, Days) |
00:52:18 | fowl | jesus |
00:52:19 | Araq | 'fromNow' still is no verb |
00:52:33 | fowl | factory patterns suck |
00:52:53 | Araq | anyway your examples still are very game scripting oriented |
00:52:54 | fowl | i dont want to Integer.parse32(someString) i just want to someString.parseInt() |
00:53:28 | Araq | you should read more of the compiler's code |
00:53:31 | filwit | var day = Date.fromNow(10, Days) # you know it's a Date object, and you know it's data |
00:53:51 | Araq | lots of procs start with 'c: PContext' and it's only an annoying implementation detail |
00:54:15 | filwit | Araq: i don't follow |
00:54:21 | filwit | idk what you mean |
00:54:36 | Araq | it's arguably even a workaround for the missing dynamic scoping in Nimrod |
00:55:09 | Araq | semExpr(c, n) # checks the expression 'n' in the context 'c' |
00:55:15 | filwit | oh, you mean the whole P/TType thing? |
00:55:20 | Araq | nah |
00:55:59 | filwit | yeah well see, i don't care so much about parameter names and local vars |
00:56:11 | filwit | cause usually the functions is small enough |
00:56:17 | filwit | you can see what those things are at a glance |
00:56:33 | filwit | but when you start getting pages of code, you need to define what's going on |
00:56:43 | Araq | no my point is: the order is especially arbitrary for this example |
00:57:01 | filwit | oh i see |
00:57:07 | Araq | I pass 'c' first for consistency |
00:57:34 | filwit | so you can do: c.semExpr(n)? |
00:57:44 | Araq | sure |
00:57:50 | filwit | well i was asking |
00:57:55 | Araq | but you can't really read it as: "please context check n for semantics" |
00:57:55 | filwit | is that why you do it? |
00:58:10 | filwit | oh i see |
00:58:17 | filwit | but see, that's a different problem |
00:58:23 | Araq | yes |
00:58:32 | Araq | it's a different *problem domain* |
00:58:33 | filwit | it should be: Syntax.check(c, n) |
00:58:55 | filwit | or something like: SyntaxUtils.check(c, n) |
00:58:58 | Araq | Semantics.check(c, n) |
00:59:02 | filwit | idk, something along those lines, yes |
00:59:13 | Araq | nah, that's absurd |
00:59:21 | Araq | "Semantics" is no person |
00:59:26 | fowl | filwit: you come from java? |
00:59:35 | filwit | Semantics is the environment |
00:59:55 | filwit | in this case, it's a single entity, but and entity none the less |
00:59:58 | fowl | so |
01:00:03 | fowl | semantics is a namespace |
01:00:11 | filwit | fowl: no - C# & D (some C/C++) |
01:00:17 | filwit | fowl: and javascript |
01:00:19 | fowl | there is already a namespace (the module the function is in) |
01:00:54 | filwit | fowl. Yes, you can use modules as global objects, that is one way to do it |
01:01:17 | filwit | regardless, the use case (eternally) should be Semantics.check(..) |
01:01:47 | filwit | look.. unless the programmer is really diligent with documentation, then you need good syntax like that (IMO) |
01:02:04 | fowl | semexpr() isnt in a public api |
01:02:08 | filwit | for the simple fact that someone who doesn't know your code, but wants to, is going to read it |
01:02:36 | fowl | filwit if you had your way keyboards would wear out extra fast |
01:02:42 | filwit | fowl: I don't know exactly what someexpr() does... so it's hard to judge |
01:03:12 | filwit | fowl: millions of devleopers use C# and Java every day, and what I'm saying isn't half as bad |
01:03:26 | filwit | the points is, there are reasons those languages got so popular |
01:03:34 | filwit | they work well in big projects |
01:03:36 | fowl | filwit: show an example of more than one function |
01:04:07 | filwit | fowl: what do you mean? what example would you like to see? |
01:04:24 | Araq | filwit: C#/Java had lots of corporate money and were hyped |
01:04:39 | filwit | also, i never meant that you should need to prefex "Semantics" if you are calling things from withint "Semantics" |
01:04:50 | fowl | String.match(String.uppercase(somestr), Regex.new("[A-Z]+", Regex.CaseInsensitive)) |
01:04:55 | fowl | is that ideal^ |
01:04:57 | Araq | C is very successful and only has function(a, b) syntax |
01:05:05 | filwit | Araq: that's true, but that's not all there is too it. |
01:05:54 | filwit | Araq: C was the original, it didn't have any competitors, AND it's still the best for low level stuff because it's easy to wrap for higher-level languages |
01:06:11 | filwit | there's a reason people make higher-level languages though |
01:06:13 | Araq | filwit: that's pure bullshit, sorry |
01:06:24 | fowl | there is so much more noise than somestr.uppercase.match(re("[A-Z]+", re.caseInsensitive)) |
01:06:29 | Araq | C had lots of competitors |
01:06:41 | filwit | Araq: no need to apologize. i'm not offended that you have a different view :) |
01:06:52 | Araq | and did slowly win over the alternatives |
01:07:08 | Araq | in particular on the PC were Pascal and Basic were strong |
01:07:09 | filwit | Araq: and you're right, C did have a lot of compeditors, i misspoke on that |
01:07:31 | filwit | Araq: so the reason C got big was due to other reasons |
01:07:35 | Araq | and it's still crappy for low level stuff |
01:07:48 | filwit | fowl: sorry, one sec |
01:07:59 | Araq | my cpu has overflow flags for a start... |
01:08:15 | Araq | C can't access them. |
01:08:20 | filwit | Araq: but not because of it's function call ABI |
01:08:59 | filwit | C has it's problems, but having a extremely simply syntax is good for wrapping into higher-order things, that was my only point |
01:09:22 | Araq | C has a quite complex syntax |
01:09:36 | Araq | with lots of problems |
01:10:51 | filwit | fowl: like I said before, regular expressions is a justifiable place for UFCS |
01:11:13 | filwit | Araq: sure, but not it's function calling convention, like you pointed out |
01:11:21 | filwit | and that's all you really use when binding to the language |
01:11:25 | filwit | well.. not really |
01:11:32 | Araq | C is also only simple if you're ignorant about it :P |
01:11:39 | filwit | yes |
01:12:31 | filwit | anyways, i think we can agree that "C does it" isn't a good reason for anything.. but it's popularity was, IMO, due to other factors than it's syntax |
01:12:52 | filwit | C is "you get what you see" |
01:13:04 | filwit | so it makes sense driver/OS developers where attracted to it |
01:13:39 | Araq | C is "you get is what you see" until you turn on the optimizer |
01:14:10 | Araq | sorry, it's just absurd to say that C#/java are popular because of obj.f(x) syntax |
01:14:25 | filwit | i didn't say that exactly |
01:14:27 | Araq | C is popular despite lacking it then? |
01:14:48 | Araq | and Delphi is unpopular desipite it got it? |
01:15:12 | filwit | no, you're putting to much into my words for one |
01:15:31 | filwit | i didn't mean that C#/Java's only reason they are popular is due to their syntax |
01:16:13 | filwit | but they do work well with larger projects because of the library names |
01:16:33 | filwit | that's more of a personal experience statement |
01:16:56 | filwit | in my experience, many people have reported C# and Java as easy to use |
01:17:06 | Araq | IME they don't really work well with larger projects due to reflection |
01:17:30 | Araq | thanks to reflection even the simplest refactorings cannot be proven correct |
01:17:56 | Araq | but I know nobody cares about correctness anyway |
01:17:56 | filwit | how is reflection a problem? |
01:18:03 | filwit | maybe i don't know what you mean by that |
01:18:12 | filwit | you mean the ability to reflect on types? |
01:18:20 | filwit | how would that be a problem? |
01:18:57 | Araq | it's a major PITA as many frameworks for Java/.NET use reflection for everything |
01:19:11 | filwit | aahhh i see |
01:19:24 | filwit | and they search for speficic variables by name |
01:19:31 | filwit | and that breaks when you refactor something |
01:19:32 | Araq | for instance, yes |
01:19:50 | filwit | that could be a problem with Nimrod's macros... |
01:20:05 | filwit | don't they also have access to the variable names? |
01:20:15 | filwit | it just depends on how you code things at that point |
01:20:23 | Araq | no really |
01:20:52 | Araq | when you rename and the macro depends on to the var's name, a compiletime error is much more likely |
01:21:03 | Araq | it depends onto what the macro does though |
01:21:17 | Araq | but it's MUCH better than C#'s reflection |
01:21:22 | filwit | so yeah, early error checking is great |
01:21:39 | filwit | and yeah, C# isn't very good in that way |
01:21:47 | filwit | i totally agree |
01:21:57 | filwit | (that's why i say i don't like it) |
01:22:07 | filwit | (and Java has even bigger problems) |
01:22:28 | filwit | but just cause they get something wrong, doesn't mean other things aren't right |
01:22:46 | Araq | but sorry, you're simply wrong |
01:23:04 | filwit | nah, i think descriptive names are importants |
01:23:06 | Araq | it's easy to navigate in a large C# project because you have IDE support |
01:23:10 | filwit | but we can agree to disagree |
01:23:31 | filwit | IDE helps navigating across files |
01:23:39 | Araq | the IDE support is much more helpful than the System.IO.File.ReadAllBytes hierarchy |
01:24:23 | Araq | heck, I don't know the hierarchy at all |
01:24:45 | filwit | well System.IO.File.ReadAllBytes is obviously an exaggeration, and not even used in C# |
01:24:48 | Araq | it's some sort of intellectual masturbation that the IDE *hides* from me :P |
01:25:23 | filwit | and It's not even about Hierarchy (although I don't mind heirarchy like you do) |
01:25:30 | filwit | it's about method names |
01:25:39 | fowl | Araq: how come the interpreter cant support cast |
01:25:40 | filwit | that's the only points i've been trying to make |
01:25:58 | Araq | but the method names in Nimrod's public modules are fine :P |
01:26:13 | filwit | .len? |
01:26:16 | Araq | but yeah, let's agree to disagree |
01:26:19 | Araq | .len is fine |
01:26:23 | Araq | python uses it too :P |
01:26:24 | filwit | it's okay |
01:26:39 | Araq | and it's an abstract thingie anyway |
01:26:58 | Araq | hash tables have a 'len' too in Nimrod |
01:27:22 | filwit | yes.. |
01:27:33 | filwit | that doesn't mean the name should be cryptic |
01:27:43 | filwit | .len isn't the best example |
01:27:47 | filwit | it's relatively clear |
01:28:00 | filwit | (still prefer .count, but whatever) |
01:28:56 | filwit | anyways... i need to continue making the HTML |
01:29:01 | filwit | we have been talking about this for awhile |
01:29:15 | fowl | filwit: macros and templates are fun |
01:29:22 | filwit | fowl: i know :) |
01:29:34 | Araq | fowl: it now supports 'cast' when you bootstrap with -d:useFFI |
01:29:36 | filwit | fowl: one of Nimrods best features for sure |
01:30:06 | fowl | oh cool |
01:30:25 | filwit | fowl: im not really new to Nimrod |
01:31:18 | Araq | fowl: it can evaluate the SDL example at compile time, but the key events do not work |
01:31:32 | Araq | because the compiler computes the field's offsets wrongly |
01:32:17 | fowl | i still get error: cast not allowed in safe mode |
01:32:34 | Araq | hrm, strange |
01:32:48 | filwit | oh Araq, i forgot. Are you a Windows or Linux guy? |
01:32:49 | Araq | do you have the latest version? |
01:33:02 | fowl | built with -d:release -d:usegnureadline -d:useffi |
01:33:03 | fowl | yea |
01:33:17 | Araq | filwit: mostly Linux |
01:33:28 | filwit | great! |
01:33:35 | filwit | Arch? |
01:33:40 | filwit | (like dom) |
01:33:46 | Araq | Mint :P |
01:33:54 | filwit | ahh.. Debian? |
01:34:02 | filwit | Mint Debian i mean |
01:34:08 | Araq | yeah, rolling release or what it's called |
01:34:30 | filwit | yeah okay. just wondering. I use Arch |
01:34:47 | filwit | but my second choice would probably be Mint Debian |
01:35:42 | Araq | Nimrod is in Arch's repositories, right? |
01:35:55 | filwit | i don't think so |
01:35:57 | fowl | -git is in aur |
01:35:58 | fowl | i think |
01:36:09 | dom96 | release and -git is |
01:36:11 | filwit | it's in AUR |
01:36:16 | filwit | so is Aporia |
01:36:30 | Araq | :O |
01:36:45 | * | Araq didn't know that |
01:37:18 | fowl | i want to port SFML |
01:37:23 | dom96 | oh cool. Schala created an Aporia PKGBUILD. |
01:37:25 | fowl | rewrite in nimrod |
01:37:36 | fowl | someone should help me with that (= |
01:38:59 | Araq | fowl: do you test 'cast' in the interactive mode? |
01:39:25 | Araq | cause it's still not allowed there then (I forgot to enable it) |
01:40:52 | fowl | is there some place up top where exceptions are caught because i keep getting exceptions that break the sessions and its really annoying |
01:41:35 | Araq | there are 2 kinds of exceptions in evals.nim |
01:41:45 | fowl | oh this is an internal error |
01:41:48 | Araq | real nimrod exceptions and "fake" exceptions |
01:42:27 | Araq | the "fake" exceptions are usually the painful ones |
01:43:34 | NimBot | Araq/Nimrod 87081dd Araq [+0 ±1 -0]: enable 'cast' in interactive mode (beware) |
01:43:40 | Araq | fowl: there you go |
01:43:45 | fowl | cool |
01:44:00 | Araq | but the results can differ from the C backend :P |
01:45:37 | fowl | Error: cannot map value from FFI [ERecoverableError] |
01:45:51 | fowl | cant recover from ERecoverable? :( |
01:46:10 | Araq | fix it |
01:46:43 | Araq | try this: |
01:47:03 | Araq | try: result = evalAux(c, n, {}) ... in tryEval |
01:47:27 | Araq | (try ... except ERecoverableError: ) |
01:47:48 | Araq | but that's no real solution |
01:47:57 | Araq | instead you should create a bug report |
01:51:39 | Araq | good night |
01:53:47 | fowl | night |
02:00:15 | * | dom96 -> sleep too |
02:00:16 | dom96 | bye |
02:03:41 | * | reactormonk quit (Ping timeout: 252 seconds) |
02:08:04 | filwit | bye guys, looks like eveyrone's ooff |
02:08:11 | filwit | heading out my self |
02:08:15 | * | filwit quit (Quit: Leaving) |
02:25:33 | fowl | well initially my toolings with SDL in interactive mode is working |
02:25:42 | fowl | i can poll events and they look sane |
03:32:12 | * | XAMPP-8 joined #nimrod |
03:36:10 | * | q66 quit (Remote host closed the connection) |
03:52:21 | * | reactormonk joined #nimrod |
04:33:39 | * | XAMPP-8 quit (Ping timeout: 248 seconds) |
05:04:48 | * | XAMPP-8 joined #nimrod |
05:34:07 | * | XAMPP_8 joined #nimrod |
05:34:55 | * | XAMPP-8 quit (Ping timeout: 260 seconds) |
05:38:43 | * | XAMPP_8 quit (Ping timeout: 248 seconds) |
05:55:33 | * | filwit joined #nimrod |
05:55:48 | filwit | working html: http://reign-studios.com/nimrod/web/ |
06:04:08 | filwit | will talk to you folks about it tomorrow |
06:04:11 | * | filwit quit (Quit: Leaving) |
07:01:56 | fowl | sdl skeleton with continuations : https://gist.github.com/fowlmouth/4970500 |
07:42:51 | * | gour joined #nimrod |
07:52:57 | * | Anaphaxeton says goodmorning to all! |
08:28:59 | Araq | hi Anaphaxeton |
08:29:10 | Anaphaxeton | hi Araq |
08:29:14 | Anaphaxeton | how is dev going? |
08:29:39 | Anaphaxeton | go make an llvm frontend. you will become more famous! |
08:30:00 | Anaphaxeton | someone was asking me what general purpose language to use |
08:30:03 | Anaphaxeton | i said nimrod |
08:30:09 | Anaphaxeton | he picked Go ..... |
08:33:19 | Araq | it's an "llvm backend" |
08:33:32 | Araq | and no, we're not working on it |
08:33:37 | Araq | I started one once |
08:33:50 | Anaphaxeton | it is a frontend since it uses llvm as a backend |
08:33:51 | Araq | but the advantages it would provide are very slim |
08:34:00 | Anaphaxeton | i am talking about marketing here |
08:34:31 | Araq | hey, we got a new website design |
08:34:42 | Araq | http://reign-studios.com/nimrod/web |
08:34:48 | Araq | how about that for marketing? ;-) |
08:35:20 | fowl | hey Anaphaxeton |
08:35:28 | Anaphaxeton | hi fowl |
08:35:34 | Anaphaxeton | nice page and nice logo |
08:36:46 | Anaphaxeton | heh the wise words of knuth |
08:37:09 | Anaphaxeton | thabs dont work here! |
08:37:13 | Anaphaxeton | tabs* |
08:38:00 | Araq | it's a design |
08:38:17 | Araq | my name is misspelt too ;-) |
08:39:12 | Anaphaxeton | i thought such things could happen only to my websides |
08:41:33 | Araq | Anaphaxeton: Go doesn't even have generics |
08:42:28 | Anaphaxeton | he is stupid |
08:43:17 | Anaphaxeton | when i will need a general purpose lang i will give nimrod a chance |
08:43:28 | Anaphaxeton | for now i am trapped in the C world |
08:43:36 | Araq | you should give it a chance for everything else too |
08:43:58 | Anaphaxeton | that |
08:44:01 | Anaphaxeton | scripting? |
08:44:05 | Anaphaxeton | what* |
08:51:53 | Araq | yes |
08:52:07 | Araq | but you can also use it with C quite easily |
08:57:24 | * | gour nods |
09:01:36 | Araq | I have to go, see you guys later |
09:07:02 | * | gour_ joined #nimrod |
09:07:02 | * | gour quit (Disconnected by services) |
09:08:12 | * | FreeArtMan joined #nimrod |
09:12:22 | Anaphaxeton | morning gour_ |
09:18:58 | gour_ | morning Anaphaxeton |
09:19:01 | * | gour_ is now known as gour |
09:19:29 | Anaphaxeton | is there a lua-nimrod bridge? |
09:20:41 | gour | there are, iirc, lua bindings |
09:21:08 | gour | see http://nimrod-code.org/lib.html |
09:28:36 | * | FreeArtMan quit (Quit: rm -rf /) |
10:00:47 | * | Anaphaxeton is innovating again |
10:01:10 | Anaphaxeton | it seems almost nobody knows about UEFI matters |
10:19:13 | * | fowl quit (Ping timeout: 248 seconds) |
11:16:43 | * | Anaphaxeton quit (Read error: Connection reset by peer) |
11:29:01 | dom96 | morning all |
11:54:53 | gour | morning dom96 |
12:01:12 | * | q66 joined #nimrod |
12:26:51 | * | Anaphaxeton joined #nimrod |
13:02:52 | * | Anaphaxeton quit (Remote host closed the connection) |
13:03:37 | * | Anaphaxeton joined #nimrod |
14:37:27 | * | FreeArtMan joined #nimrod |
14:44:37 | * | FreeArtMan quit (Read error: Operation timed out) |
15:04:37 | * | Anaphaxeton quit (Read error: Operation timed out) |
15:08:06 | * | FreeArtMan joined #nimrod |
18:07:16 | reactormonk | moooorning |
18:10:11 | Araq | hi reactormonk |
18:25:46 | * | filwit joined #nimrod |
18:26:06 | filwit | afternoon, people |
18:26:28 | filwit | did you see the working HTML site I posted? |
18:27:01 | filwit | if not: http://reign-studios.com/nimrod/web/ |
18:27:05 | dom96 | hey filwit |
18:27:09 | filwit | hi dom |
18:28:28 | Araq | hey filwit |
18:28:40 | filwit | so whenever you guys want to switch things over, I will help you understand the code and make more pages out of it |
18:28:47 | Araq | good news: I still like the design :P |
18:29:00 | filwit | and i will give you the source art as well (Inkscape SVG) |
18:29:12 | filwit | glad to hear it, Araq :) |
18:29:19 | dom96 | filwit: brilliant. |
18:29:36 | Araq | well it's planned to switch with a new release |
18:29:48 | filwit | ETA? |
18:30:10 | Araq | 1-2 months I guess :-/ |
18:30:24 | filwit | okay sounds good |
18:31:03 | filwit | in the meantime, i will zip up the source and send it to whoever (you and dom?) just let me know emails |
18:31:51 | dom96 | email pm'ed |
18:32:00 | filwit | also, i would encourage whoever is going to manage the code, to get familiar with it |
18:32:07 | filwit | okay, thanks dom96 |
18:33:03 | filwit | the site is pretty simple, (no JS or anything), so it shouldn't be difficult |
18:33:43 | Araq | filwit: indeed, it's sweet, just looked at it |
18:34:28 | Araq | you tested it in multiple browsers, right? |
18:35:49 | filwit | i've written enough websites to know what to avoid, but I haven't done extensive testings |
18:36:14 | filwit | it's one of the things i wanted everyone to help with (cause I'm to lazy to boot into windows and try it on IE) |
18:36:38 | filwit | (jk, I will just get to that later) |
18:36:57 | filwit | it's been tested on Chromium & Firefox (linux) |
18:37:54 | dom96 | filwit: Adobe Browser Lab is your friend :P |
18:37:59 | filwit | my only concern is IE7 and below (they do something funky with their box-model and positioning, but i forget exactly what is the PITA there) |
18:38:20 | filwit | dom96, at right, i forgot about that! |
18:38:30 | dom96 | also browser shots. |
18:39:14 | filwit | I've always used IETester |
18:57:34 | filwit | okay, just tested in Adobe Browser labs and it appears to work well in all browsers |
18:58:23 | filwit | though, Browserlabs kinda sux |
18:58:33 | filwit | you can't see rollover effects or anything |
18:59:55 | dom96 | yeah true |
19:00:04 | Araq | see you later guys, I'm watching a movie |
19:00:12 | filwit | k |
19:00:14 | filwit | bye |
19:03:03 | filwit | sent you the source, dom96 |
19:03:44 | dom96 | thanks |
19:10:00 | gour | filwit: do you use some CSS framework for web design? |
19:11:09 | filwit | gour: no, handwritten |
19:11:24 | filwit | or are you asking about my naming ? |
19:11:35 | gour | no, just if you use some framework |
19:13:05 | filwit | oh, nope |
19:13:24 | filwit | i thought you might be asking cause some of the styles are "inlined" while others aren't |
19:13:38 | filwit | (and they're tabbed) |
19:14:16 | filwit | which i think makes finding the correct HTML-CSS much easier (and also corresponds to the Comments) |
19:18:14 | * | Anaphaxeton joined #nimrod |
19:34:19 | gour | filwit: i suggest that you direct your perfectionism towards web-design and embrace nimrod as it is helping it to become better ;) |
19:38:48 | filwit | gour: i will definitely help with web-design and advertising when i can ;) |
20:17:10 | * | FreeArtMan quit (Read error: Operation timed out) |
20:34:08 | gour | i'll probably use generics & templates, but not so sure about macros and wonder whether you consider it's safe to start real-world project with the current version of nimrod or something significant may change before 1.0? |
20:34:45 | dom96 | filwit: So how about that Aporia icon? ;) |
20:35:55 | gour | ...iow, is nimrod production-ready? |
20:49:38 | Araq | gour: generics&templates work fine, there are a couple of bugs left, but I'd use it in production |
20:51:36 | filwit | dom96: we can get to that later :) |
20:51:53 | filwit | dom96: but for now, i need to start finishing stuff on other projects |
20:52:05 | filwit | how about next weekend we design the Aporia logo? |
20:52:19 | dom96 | filwit: Sure. No worries, no need to hurry :) |
20:52:42 | filwit | Maybe Aporia can get it's own page on Nimrod-code.com |
20:53:00 | filwit | and we can put up some better screenshots and stuff, or something like that |
20:53:24 | filwit | also, I have an idea for a good Aporia logo |
20:53:27 | Araq | filwit: of course; I heard the nimrod guy and the aporia guy are good friends ... |
20:53:34 | dom96 | yeah, that might be a good idea. |
20:53:37 | dom96 | ^^ haha |
20:54:56 | dom96 | filwit: what's your idea? |
20:55:19 | filwit | a rainbow butterfly |
20:55:27 | filwit | with makeup on |
20:55:44 | filwit | bright red lipstick |
20:55:48 | Araq | filwit: btw allowing 'var a.b = 0' in the grammar so that macros can process it can easily supported |
20:55:50 | dom96 | lol? |
20:55:57 | filwit | and a quote bubble that says "it puts the lotion on it's skin" |
20:56:10 | dom96 | Aporia is not homosexual :P |
20:56:39 | filwit | :P |
20:56:41 | Araq | filwit had too much of this: http://perl6.org/ |
20:56:55 | filwit | Araq: hmmm... one sec |
20:57:05 | filwit | LOL |
20:57:08 | filwit | exactly |
20:57:11 | filwit | the perfect logo |
20:57:25 | gour | Araq: good to know...then we can better proceed sooner than later :-) |
20:58:05 | filwit | Araq: did you mean that you where adding in "var a.b = 0" syntax? or are you saying it's possible to adjust the compiler to handle it? |
20:58:57 | Araq | filwit: the later |
20:59:21 | Araq | it's very simple to support it in macros |
20:59:37 | filwit | is 'var' a macro? |
20:59:43 | Araq | no |
20:59:52 | Araq | but it's embedded in a macro then |
21:00:29 | filwit | so how would macro's handle it? what gets called when you define "var a.b" ? |
21:00:46 | * | dom96 hopes programmer's won't think aporia is a perl6 IDE |
21:00:54 | Araq | mymacro: var a.b = 0 |
21:01:05 | Araq | currently this doesn't even parse |
21:01:13 | filwit | i see |
21:01:13 | Araq | so you can't process it in 'mymacro' |
21:01:46 | filwit | so you want me to prefix every var definition like that? |
21:02:35 | Araq | actually I'm just sayin' I'm willing to improve things to support your favourite notations |
21:03:32 | filwit | okay, I appriciate your willingness to work with me (I always have), but before you go off and start hacking away on that feature, let me figure some stuff out |
21:04:00 | Araq | oh don't worry, my todo list contains a couple of more important items :P |
21:04:11 | filwit | okay :) |
21:04:49 | filwit | i would love to work with your guys on a language (I mean actually work on the compiler and stuff with you), I've learned a lot about this and think I could contribute a lot.... |
21:04:52 | filwit | that said... |
21:05:36 | filwit | idk if it's really going to work. we disagree on some fundamental issues, and I place a lot of importance and readability, simplicity, and consistency |
21:06:34 | filwit | so I will look into Nimrod |
21:07:27 | filwit | maybe I can create a Gist of Ideas I would like to have (with reasoned arguments behind them), and you can respond to that on your own time and let me know if a) they're possible in Nimrod, and b) you agree with them |
21:09:03 | Araq | sounds like a good plan, but we already know about (b) ;-) |
21:09:43 | Araq | one question is if you can live with a language that allows (a) but doesn't enforce it |
21:10:13 | filwit | maybe, but we might agree on more points than we know, and a more forum-type discussion might help clear the air |
21:10:29 | filwit | ^ that was in context of (b) |
21:12:20 | gour | dom96: considering there are no ncurses bindings and i'd like to be able to test custom-written libs, do you find appropriate to just use gtk for simple console app for testing purposes? |
21:13:31 | filwit | Araq: you mentioned writing my own parser for Nimrod. The problem there is that then I'm working with Nimrod's standard lib, which I want to change in some ways |
21:14:13 | filwit | Araq: and I'm not talking about abbreviations (though i would like to change that too), I'm talking about Object structure. |
21:14:30 | filwit | Araq: which means, I would basically be re-writing the standard-lib |
21:14:42 | dom96 | gour: Well it really depends what kind of console app it is. I would probably create a binding for ncurses (for educational purposes ;)) |
21:14:49 | filwit | Araq: at which point, i ask, "why not just make my own language?" |
21:15:33 | gour | filwit: to save time and avoid NIH syndrome :-) |
21:15:51 | filwit | Araq: like I said, I would love to work with you folks. I hope you know I consider you one of the best developers I've ever met, you obviously know your code, and it works well for you. |
21:15:55 | gour | dom96: ok, i'll think about it |
21:16:22 | filwit | Araq: that's why I'm saying I need to look into some things. |
21:17:12 | Araq | filwit: you could create your own parser & stdlib and would still save ~7 years of development work |
21:18:22 | filwit | Araq: a lot of that might be made up by LLVM and the fact that my language doesn't use a "GC" |
21:18:25 | gour | dom96: the final app will be full-fledged GUI, this one would be just to have some framework for testing custom libs which we need to write...besides writing those, i've to learn gtk to be able to do gui part |
21:18:37 | filwit | Araq: but i hear what you're saying |
21:19:00 | Araq | LLVM is overrated :P |
21:19:31 | filwit | it's not bad (granted i've only used it experimentally) |
21:20:16 | dom96 | gour: Why do you need a GUI or CLI for testing your custom libs? |
21:20:25 | filwit | also, it would only be one backend, wrapped in a modular Builder API that could support other backends (GCC, C-gen, etc) |
21:21:07 | Araq | I've heard things like these before ... :P |
21:21:57 | gour | dom96: it's not GUI or CLI...the end app is going to be GUI, but i consider that maybe having simple console app to test could be quickly put together before venturing into GUI interface |
21:22:18 | filwit | gour: use Glade and the GTKBuilder |
21:22:42 | filwit | gour: it is easy. all you do is set up the GUI with Glade, when connect signals functions |
21:22:53 | gour | dom96: maybe i should just write simple CLI app to test libs first and then design GUI |
21:22:59 | filwit | gour: look up Vala tutorials, then translate them to Nimrod |
21:23:08 | gour | filwit: thanks. will do |
21:24:09 | dom96 | gour: Another thing you could do is create a web interface, that may be easiest and also quite a nice feature in the future. |
21:24:46 | gour | dom96: i was thinking about it, but i'm afraid that html5 is not sufficient for such kind of app |
21:24:52 | filwit | dom96: but then he has to work with Javascript.... which is a sin |
21:24:58 | gour | :-) |
21:25:17 | gour | yeah, i'm not very fond of JS |
21:25:18 | dom96 | Use the nimrod js backend :P |
21:25:37 | filwit | Nimrod has a JS backend? |
21:25:38 | gour | i just wondered why such things exist |
21:25:44 | filwit | did not know about that |
21:25:47 | dom96 | filwit: yep |
21:25:56 | gour | someone is going to write web apps in nimrod? |
21:26:15 | filwit | gour: it's possible apparently |
21:26:33 | gour | or mobile OS-es are tempting :-) |
21:27:08 | Araq | we have examples for mobile OSes in the distribution |
21:27:50 | * | gour owns droid phone...will take a look |
21:28:58 | filwit | Araq: one other reason I'm playing around with my own language, is because I really want to see how well my var/ref/ptr memory model works out in practice. |
21:30:16 | filwit | Araq: I think it adds a lot of clarity to what is going on with the variables, and helps coders understand variables intended purposes |
21:31:33 | filwit | Araq: it also avoids a managed heap, so pointer access is more direct, which should be more effecient (on top of it not needing to scan for cycles... or scan in general) |
21:31:57 | filwit | Araq: obviously, I can't really try that out in Nimrod... well, I sorta coult |
21:31:59 | filwit | could* |
21:32:13 | filwit | actually.... |
21:32:29 | filwit | now that i think about it.. Nimrod would be the best language to try it out in |
21:32:36 | filwit | cause I could define my own operators... |
21:32:41 | filwit | hmm.... |
21:32:49 | filwit | maybe I will play around with that concept |
21:33:50 | * | gour --> sleep or some reading |
21:33:54 | gour | 'night folks |
21:34:01 | * | gour quit (Quit: WeeChat 0.4.0) |
21:34:01 | filwit | bye |
21:38:31 | Araq | filwit: "pointer access is more direct"? you don't need any indirection even in copying GCs... |
21:38:45 | Araq | *any additional |
21:40:07 | filwit | maybe your GC is different than Ds. In D (I believe, though trying to get the reference of something), reference types are Type** not Type* like you would use in C/C++ |
21:40:22 | Araq | nah |
21:40:27 | filwit | because a ref is just a ref to a pointer on the GC heap |
21:40:38 | Araq | that's wrong |
21:40:47 | Araq | both for Nimrod and D |
21:41:11 | filwit | hmm... could you explain? |
21:41:55 | filwit | I've tried to get the values of things in D before, and had to go through and extra level of indirection compared to using a "int*" explicitly |
21:42:21 | Araq | 'ref T' is translated into 'T*' in Nimrod |
21:42:35 | Araq | so is 'ptr T' |
21:42:36 | filwit | is the GC compacting? |
21:42:39 | Araq | no |
21:42:53 | filwit | i see |
21:42:59 | Araq | but as I said, you don't need that in a compacting GC either |
21:43:20 | Araq | you can patch every location that contains the old pointer value instead |
21:43:25 | filwit | how? if the memory moves and you have a reference to something... doesn't it get lost? |
21:43:38 | Araq | the GC patches your pointers |
21:43:43 | filwit | ahh.. you use shadow ref stacks? |
21:44:05 | filwit | i read your GC docs |
21:44:07 | Araq | well my GC doesn't compact so it doesn't need to patch anything |
21:44:11 | filwit | you use Ref Counting? |
21:44:20 | Araq | kind of, yeah |
21:44:54 | Araq | it's based on RC, but much more complex |
21:45:05 | filwit | so basically, the GC is a managed heap (of values) and a manged heap of shadow-refs ? |
21:45:19 | Araq | there are no shadow-refs |
21:45:27 | filwit | maybe i'm using the wrong term |
21:45:38 | filwit | i mean "reverse references" |
21:46:00 | filwit | aka, you maintain a pointer to each reference that the code creates |
21:46:01 | filwit | ? |
21:46:20 | filwit | and then you scan through those pointers? |
21:46:25 | Araq | there is no need for "reverse references" |
21:46:44 | filwit | ah, no i see |
21:47:22 | filwit | you add a little padding in the managed heap, then use negative offsets |
21:47:27 | filwit | like your docs say |
21:47:36 | Araq | yes |
21:47:43 | filwit | to get the RC/Typeinfo data for each reference |
21:47:52 | Araq | yep |
21:48:00 | filwit | that makes sense |
21:48:55 | filwit | is there a reason you don't compact (eg, is it not needed now?)? |
21:49:09 | filwit | or have you just not added it? |
21:49:38 | Araq | the current memory manager has some fragmentation problems apparently |
21:49:50 | Araq | but I don't believe in compacting |
21:50:29 | filwit | why? if it's thread-local and incremental, it shouldn't cost to much.. |
21:50:35 | filwit | plus, you could always disable it |
21:51:05 | filwit | not accusing you of anything, just wondering why you don't like it |
21:54:08 | Araq | well it would require precise stack marking for a start which we don't have yet |
21:54:41 | Araq | and it looks like quite some work to implement the pointer patching :P |
21:55:43 | Araq | plus most copying collectors traverse the graphs breadth first |
21:55:58 | Araq | which is not the natural traversal ordering |
21:56:33 | Araq | which means your "wonderfully efficient" compacted heap is compacted in the wrong order |
21:56:52 | filwit | i see, that makes sense |
21:57:13 | filwit | but also seems like another reason I like my method of memory management |
21:57:27 | filwit | (not that mine gets compacted) |
21:58:07 | Araq | a copying GC for the C backend looks like it's as much work as azul's "pauseless GC" algorithm |
21:58:58 | filwit | i'm unfamiliar with azuls algorithm. is it comparable to my idea? |
21:59:30 | Araq | lol, no, not at all |
22:00:00 | filwit | okay. you know. what you just told me about the negative-offset thing totally fixes my problem i was having |
22:00:09 | Araq | nobody except you bothers with shadow reverse references :P |
22:00:19 | filwit | i don't need that anymore |
22:00:21 | filwit | :) |
22:00:31 | filwit | well.. sorry scratch that |
22:00:42 | filwit | i do need that on Dynamic arrays |
22:00:50 | filwit | but it's easy and fast |
22:01:32 | Araq | do you know how many dynamic arrays the compiler creates when bootstrapping? |
22:02:09 | filwit | it doesn't seem that bad, i would pool the reference in a heap, and each array only maintains a slice reference |
22:02:54 | Araq | 1 million, at least |
22:03:42 | filwit | and since i know that the refs will correctly remove themselves from the DynamicArrays when they're re-referenced, then I know that the managed shadow-heap only needs to be as big as the number of references the code creates |
22:04:05 | filwit | awesome. |
22:04:12 | filwit | thanks for your insights man |
22:04:33 | filwit | you totally fixed the problem i was having earlier about function parameter specialization |
22:04:52 | filwit | i thought i was going to have to do a lot of magic, but it looks like i wont need to |
22:05:23 | filwit | and each reference only needs 1 bit padding! (maybe 1 byte for cache optimization) |
22:06:08 | Araq | could be fun to see how your design in practice |
22:06:21 | Araq | I don't think it'll work :P |
22:06:35 | filwit | dont rain on my parade! |
22:06:39 | filwit | i'm excited about this actually |
22:06:50 | filwit | it will work, i've thought about it alot |
22:07:00 | filwit | and you just fixed the only problem i was having |
22:07:13 | Araq | nice to hear |
22:08:07 | filwit | dude.. maybe I'll try this out in Nimrod (using macros and custom operators) then i'll show you :) |
22:08:19 | Araq | have you also thought what it will do to the expressiveness? |
22:08:41 | filwit | yes, it will make things consistent and more understandable |
22:08:51 | filwit | it's one of the things i like best about it |
22:08:55 | filwit | :P |
22:09:13 | filwit | plus, you always have 'ptr' which is unmanaged |
22:10:24 | filwit | the reason I like it, is because then there's no confusion about what the code does... '=' is always a copy op (even for refs), '=>' is always a reference op |
22:12:15 | filwit | when you read someone's code, you know exactly what it's doing, and honestly the concept of "restricted refs" is actually good for keeping noobs from doing stupid things.. pus gives you opportunity for early compiler errors. |
22:12:48 | filwit | ref r => null |
22:12:56 | filwit | r = 1 # compiler error |
22:13:13 | filwit | (in some cases) |
22:14:44 | filwit | oh, ps. Something i forgot to say about the whole "Console.write" vs "echo" thing.. is that I agree you should be able to just do: "write(...)" |
22:14:58 | filwit | you just need to put "using Console" at the top of the code |
22:15:03 | filwit | I also don't like imports |
22:15:34 | filwit | i think you should just pass the files into the compiler (or define file packages to pass in), and then just use Types |
22:15:50 | filwit | so if you define: type Foo in one file |
22:16:11 | filwit | then any other file could use "Foo" without needing to "import foo.nim" type of thing |
22:16:32 | filwit | (or course you'd need a "prefer System.Foo" type semantic for large projects) |
22:16:46 | filwit | but anyways... just wanted to add that. |
22:17:38 | Araq | ok |
22:36:45 | Araq | "Note that we are not giving parameter names for most of the above operations. Parameter names are generally optional on the specification, and if the type names of the inputs are unique, the type names may be used to refer to the corresponding input, both at the call site and within the body of the operation." |
22:36:54 | Araq | sounds like a good idea ... |
22:37:08 | * | Araq is reading about ParaSail |
22:38:27 | filwit | yeah, ParaSail looks interesting |
22:38:54 | * | filwit doesn't like it's syntax though |
22:39:36 | filwit | i also like how you can't pass to "out" vars into two separate parameters |
22:43:39 | Araq | the pointer-free style of programming won't work though IMO |
22:44:33 | filwit | idk enough about large-scale concurrent code models to comment on that really |
22:45:05 | filwit | i would feel really restricted without pointers |
22:45:38 | filwit | but maybe they cause a lot of problems with tons of threads... |
22:47:26 | filwit | you know Araq.. i have an idea on how we can combined forces |
22:47:54 | filwit | Nimrod is so expressive, it's almost like you can write your own syntax inside it |
22:48:07 | filwit | but it still puts just enough restrictions, that you can't really |
22:48:51 | filwit | i wounder if there's a way to make some sort of "custom keyword", "realiasing", and "restrictions" system into the core of Nimrod |
22:49:21 | filwit | therefor, "Nimrod" could be the fully expressive language that you like, but then I could basically use it to make a restricted sub-language |
22:49:56 | filwit | i'm just thinking about how to do that exactly, and I think there might be some merit to it |
22:50:57 | Araq | the design idea is that you can't mess with the syntax too much; parsing is always possible without context |
22:51:19 | Araq | if you need something else, use string literals and compile time processing of them |
22:51:58 | Araq | you can easily parse snippets in the string literal as Nimrod code via the macros API |
22:52:43 | Araq | it's unlikely to be ideal for your use case, but it's a good starting point |
22:53:08 | filwit | is '.' a macro/proc in Nimrod? |
22:53:33 | filwit | `.` ** |
22:55:27 | Araq | not yet ;-) |
22:55:35 | Araq | it's planned though |
22:56:35 | filwit | at that point, i could probably roll my own standard lib (which would just realiase Nimrods one) and design things to be "pure OOP" |
22:57:09 | filwit | i would just need to make a nimrod wrapper program which compiled with different default imports |
22:59:56 | Araq | there is only 'system.nim' that's a default import |
23:00:11 | Araq | there are no other default imports anyway |
23:00:26 | filwit | yes but I would also need my own import path |
23:00:32 | filwit | to my standard lib |
23:01:16 | filwit | my language would just be an "extension" or "repackaging" of Nimrod |
23:01:34 | filwit | (and we shall see who's get more popular!) |
23:01:38 | filwit | (jk) |
23:01:50 | Araq | just edit the config file to change the import paths |
23:01:57 | Araq | or overwrite them per project |
23:02:03 | Araq | or per directory |
23:12:43 | filwit | anyways, Araq, I'm heading out |
23:13:46 | filwit | good talking to you, even though I'm sure I annoy the crap outta you |
23:13:54 | filwit | later! |
23:13:59 | Araq | you don't |
23:14:03 | Araq | good night |
23:14:09 | * | filwit quit (Quit: Leaving) |
23:45:04 | * | q66 quit (Remote host closed the connection) |
23:46:00 | * | fowl joined #nimrod |
23:58:51 | * | Anaphaxeton quit (Remote host closed the connection) |