<< 01-03-2014 >>

00:03:51Araqgood night
00:05:52*tinAndi quit (Quit: ChatZilla 0.9.90.1 [Firefox 27.0.1/20140212131424])
00:06:15*Puffin quit (Quit: WeeChat 0.4.3)
00:06:34*BitPuffin joined #nimrod
00:12:34*darkf joined #nimrod
00:19:19*EXetoC1 joined #nimrod
00:21:14*EXetoC quit (Ping timeout: 264 seconds)
00:25:11*nequitansMobile joined #nimrod
00:31:56*skyfex quit (Quit: Computer has gone to sleep.)
00:43:36*nequitansMobile quit (Ping timeout: 240 seconds)
00:49:12*EXetoC1 is now known as EXetoC
00:49:13*icebattle quit (Quit: leaving)
01:14:52*io2 quit ()
01:26:31*nequitans_ joined #nimrod
01:27:14nequitans_Ah, Araq, I fixed the indexing issue (thanks), but that wasn't the cause of the slowdown. Your guess about the random number generator appears to be the cause
01:42:48*Matthias247_ quit (Read error: Connection reset by peer)
01:46:21*DAddYE quit (Remote host closed the connection)
01:46:37*zielmicha quit (Quit: Connection closed for inactivity)
02:32:55*XAMPP-8 joined #nimrod
02:34:25*XAMPP-8 quit (Client Quit)
02:38:52*nande quit (Remote host closed the connection)
03:00:16*Tyler__ quit (Quit: Leaving)
03:08:52*xtagon joined #nimrod
03:16:33*DAddYE joined #nimrod
04:09:57*q66 joined #nimrod
04:19:05*skrylar joined #nimrod
04:19:06*skrylar peeks in for a moment
04:19:57skrylarAraq: so what was the final verdict on --cs:partial; are we losing the neat style-insensitivity or has forcing a naming style become a failed experiment?
04:21:55*comex_ is now known as comex
04:23:12Demos_I think araq is asleep
04:26:44skrylari'll just have to send dream ghosts to haunt
04:27:05*filwit joined #nimrod
04:27:54filwitskrylar: i think removing the T/P prefix would be best for adoption
04:28:01filwit(just read the logs)
04:28:38filwitbesides, local variables should not be named ambiguous things like "file" anyways.
04:29:14Discolodathat is what originally made me ignore Nimrod, case insensitive identifiers (why, i imagine, T/P became convention)
04:29:15filwitso: var prefsFile = File.open("..") shouldn't cause naming conflicts, case-sensitive or not
04:30:02filwit(not really valid code, but you get the idea)
04:30:56filwitDiscolada, yeah the Hungarian notation was always a sore spot for me, but i really like the case-insensitivity (though it probably does cause some conflits
04:31:53filwitstill, the compiler should be able to figure this out: var file: File; open(file, "...") # because this overload doesn't take a typedesc, it implicitly accepts the local var
04:32:02Discolodai guess my C code is worse, i dont use typedefs for structs so i end up with "struct foo" everywhere
04:32:35filwitDiscolada, I've seen a lot of major C project do the same though (wayland for instance), not sure why
04:33:14Discolodai feel its more explicit and uses the struct/union namespace for those types
04:35:17filwitbrb
04:38:50filwitUltimately I never really saw the point of T/P prefixes to begin with. It seems to be a left-over from when Nimrod didn't have 'type T = ref object' and you had to make a seperate alias (PFoo = ref TFoo) for everything
04:39:09skrylarDiscoloda: what made you eventually decide to un-ignore nimrod?
04:39:32skrylarfilwit: i actually like pascal type names, but it's not something i'm going to riot over or anything.
04:39:34Discolodac2nim
04:40:12skrylarthere's a lot of C/C++ code that has "CThisClass", enums have hungarian notation "e.g. ThisEnum = teDoAThing" so its not exactly unheard of
04:40:34filwitskrylar: yeah i saw your forum post
04:40:49skrylarQt names everything QBlah and also notates enum flags
04:41:12filwitskrylar: i don't see the point of a prefix at all unless you have a global (and i have a better idea for that anyways)
04:41:26skrylarDiscoloda: sounds like nimrod is full of those weird things that look like dealbreakers at first and then you come back two weeks later and realize they aren't, lol. For me it was the C compilation step
04:41:35skrylarfilwit: for enums or for type names?
04:41:35filwitskrylar: "global" means "singleton"
04:41:45filwitskrylar: both?
04:41:51Discolodathe c compilation is also what brought me back
04:42:16skrylari thought the point of prefixing enums was so you could write taJustified instead of JustifiedTextAlignment or TextAlignment.Justified everywhere
04:42:39filwiti prefer the latter really
04:42:53skrylarHaskell's algebraic types lead to that awful JustifiedTextAlignment style of naming too
04:43:32filwitare you really typing TextAlignment.Justify so often that it becomes a chore?
04:43:33skrylarbut i'm an old pascal/delphi derp, so i tend not to mind pascalisms
04:43:53skrylarfilwit: depends on if i'm using an awesome text editor or not
04:44:05filwitplus, this problem disapeers when you have intellisense/code-complete
04:44:13skrylarI didn't mind as much with Sublime's fuzzy text complete, but its a chore in everything else (e.g. vim)
04:45:04filwitmeh, I use Kate at the moment but am used to Visual Studios. Both basically means i start typing three characters then hit tab most of the time
04:45:07skrylarIt also looks stupid when you have to type ThisEnum.DoAThing | ThisEnum.DoAnotherThing when you're composing a set of obviously the same enum type
04:45:37skrylareh, i use Ctrl-P in vim which does that but sublime does one better
04:45:48filwitwell that's why you can just use DoAThing | DoAnotherThing unless there's a conflict
04:46:07skrylarit uses a fuzzy match instead of a prefix match, so you can type "sfm<tab>" and it will go "Oh, SuperFlippingMachine"
04:46:57filwithonestly, what the compiler should do as far as naming resolution is this: if the function takes an enum, you don't need to prefix the enum name and it doesn't conflict with local names when they're of non-acceptable types
04:47:20skrylardoesn't that add extra symbol table and scoping rules though?
04:47:42skrylarone of the pascalisms is to avoid symbol table lookups because they exponentially slow the compilation of huge codebases
04:47:48filwitso if you have: var justify = 10; foo(Justify) # take TextAlign enum - no conflict since local is type int
04:48:26filwitskrylar: you could be right, i'm not sure. I haven't really thought about the performance implications.. but honestly i would accept a slower compiler for this kind of thing
04:48:38skrylarslower compilers have to be accepted very carefully
04:49:00filwittrue, but i doubt it would be a huge deal unless you had a shit-ton of name conflicts?
04:49:07skrylarspecifically what we all *don't* want is a "well lets put this in for that feature, now lets tie everything in to it since we already have it" and then the compiler becomes C++0x
04:49:35skrylari'm not objecting to it intelligently solving the name conflicts btw
04:49:59filwitplus, i really don't see how that would slow things down... it just looks at the proc overloads and says: if this takes an enum, resolve to that enum type
04:50:17filwitotherwise it looks for locals
04:50:32skrylari have no idea how the AST passes run though i should probably look some time
04:50:42skrylari know macros don't get access to certain type information from parameters
04:51:37skrylarhaving an enum value the same identifier as a structure or function name could confuse what "let x = Foobar" means
04:52:05skrylar(admittetly other languages already solve that by just saying its ambiguous and listing off the potential matches)
04:52:22filwitthe only area i ever need to use 'TFoo' is if i have a type that's design to be a singleton.. and that could be resolved if Nimrod eventually adds "type Foo {.global.} # creates singleton and all access is to the global var not typename"
04:52:49skrylarI don't think thats something you would need compiler help for
04:53:00skrylarthat sounds like something a regular macro could do
04:53:07filwityeah, good point
04:53:22Demos_I like T/P prefixes
04:53:25skrylarif a regular macro can't do that, it *should* be able to
04:53:34filwitplus it's not a huge deal to just make "TFoo; var Foo*: TFoo"
04:53:34Demos_although I don't see what is so bad about ref TBlah
04:53:51Demos_also I dont like the ref object syntax, since it limits what people can do with the object
04:54:05filwitDemos_, how does it limit?
04:54:19skrylarDemos_: that goes back to a pascal-ism where pointer types had to be typedef'd because it allowed the compiler to sweep everything in one-pass with simpler grammar
04:54:19Demos_it enforces refernce semantics
04:54:21filwiti'm pretty sure you can get the non-ref type
04:54:26filwiti just can't remember how
04:54:53skrylaryou can do a much simpler grammar if you only need to accept an identifier
04:55:08skrylarwhich is the legacy of PFoo
04:55:12Demos_still, I really dont mind the prefixes
04:55:30skrylarI don't either, but its not really up to me. lol
04:55:40filwitDemos_: the biggest problem with the T/P thing is adoption concern. I mean most people can "live" with it, but they're not going to move away from "language X" for something they feel is straight out of the 80s (not my words)
04:55:46Demos_I dont understand why people have their panties in a bunch
04:55:56Demos_oh dear god
04:55:58skrylarfilwit: if thats the only reason, i don't think its legitimate
04:56:10Demos_"the syntax is not C so it must be slow"
04:56:21skrylarOnce you're so far outside of C syntax, changing one tiny thing isn't going to make them go "oh well i've changed my mind then!"
04:56:38filwitskrylar: i think it's very ligament if Nimrod hopes to gain popularity and eventually be funded somehow
04:56:47Demos_these are the people who are going to bitch about every way in which nimrod is different from java
04:57:02skrylarfilwit: but D is a C-like and doesn't have commercial support either
04:57:16Demos_skrylar, well...erm...facebook
04:57:20Demos_a little
04:57:26filwitskrylar: D actually offers commercial support now
04:57:37skrylaroutside of digital mars?
04:58:04filwitnot sure if anyone pays for it or not, but Remedy games is hireing D devs.. so..
04:58:25Demos_interestingly I found nimrod really easy to pick up dispite never having used another language with a similar syntax
04:58:40skrylarI'm not an expert on language marketing, but I'm still fairly sure people make their decisions on tooling support more than whether there is a T prefix
04:58:46filwitskrylar: i'm not sure what you mean by "outside digital mars" you mean DMD?
04:59:05skrylari remember araq posting about Delphi still being marked as the 17-th most used language or something
04:59:43Demos_well delphi was kinda killed by having too much commercial support right?
04:59:47filwitskrylar: of course there are many reasons people use one language over the next. The point is what is statistically the best option.
04:59:54skrylarDemos_: Delphi compilers are bumfooz expensive
05:00:18skrylareven back in delphi 5 days they wanted a few thousand for a single developer
05:00:23filwitskrylar: I'm very unfamiliar with the Delphi/Pascal world, so i can't really comment
05:01:14skrylarfilwit: 'statistically the best' is how you get to live with C++ :P
05:01:40filwitall I'm saying is this: statistically speaking, we would *probably* get more interest if we removed the T/P thing, right? And then you folks could still use it if you wanted too.. so it's a win-win
05:01:43Demos_christ over $4,000 for delphi
05:02:10skrylarfilwit: we really couldn't; it would schism from the standard library
05:02:23Demos_we probably will not get more intrest by doing that but whatever, Also, I want to point out that it is useful in documentation browsing
05:02:28filwitskrylar: no, i don't just mean pure democracy. I'm not saying lets just take a poll and do whatever that leads too. I'm saying it's relevant tho
05:03:03skrylarfilwit: yeah but that same argument could say why are 2x spaces the compilers indent marker?
05:03:10skrylarwe could get more interest if we supported tabulators
05:03:11skrylaretc
05:03:46filwitskrylar: accept that has demonstrably negative implications, while removing T/P just means more adoption
05:03:53Demos_I thought it was just alignment, if you want to use 4x spaces you can afaik
05:04:11skrylaras I said the other night, you need a 'killer app' and then it doesn't matter what decisions you made along the way
05:04:26skrylarRuby is dog slow and always has been, kind of quirky in many ways, and 37signals made everyone stop caring
05:04:26filwitskrylar: completely agree with that
05:04:26Demos_right, except that T/P helps when you are style-insensitive, which I personally like
05:04:49Demos_what was c++'s killer app?
05:04:55skrylarthe thing with Matz is he never sat and said "What would make my language more appealing to C coders?", he's said up front "I wrote this to make it fun to use"
05:05:07filwitDemos_, it doesn't actually help with case-insensitive though
05:05:10skrylarDemos_: C++'s benefit was that it stacked on to C
05:05:31skrylarthe alternative was Objective-C, but the two guys who made Obj-C wanted extortionate fees
05:06:35skrylar(I don't actually have a super-strong lamentation about dropping T/P, I just don't think that people are choosing against Nimrod because of syntax. I mean people are choosing Rust and the syntax is godawful for that.)
05:06:58skrylarThey didn't even consider what looked like code, they just slapped a parser over text and went "welp it works lets keep it"
05:07:42filwitskrylar: i almost passed up Nimrod because of this sort of thing, and I've met a bunch of people who have complained about it a ton. The only people who seem to like it don't really care either way, so we should just remove it and everyone is pretty happy :P
05:07:57skrylarfilwit: as long as i get to keep my style insensitive parser
05:08:26filwitskrylar: agree there. I always liked the case-insensitive thing Nimrod's got going on
05:08:42filwitit means everyone can agree-to-disagree
05:08:47Demos_I will probably keep using T/P prefixes
05:08:48filwit:P
05:08:50xtagonWhat's the benefit of style insensitive parsing anyways? Do people commonly typo their capitalization?
05:08:57Demos_also, lets remember that C coders are used to this sort of thing
05:09:00skrylarxtagon: it removes the argument over style
05:09:01Demos_namespaces and whatnot
05:09:27filwitxtagon: if i really like camelCase but you really like snake_case you can use my lib how you like
05:09:30Demos_and I find it nice to be able to just type the funciton name without looking up capitalization in the docs
05:09:36xtagonAh
05:09:47skrylarxtagon: basically, people can scream blue in the face over "official styles" but nobody cares; thats a "me vs you" opinion argument. If the compiler is style insensitive, then it simply *does not matter* and so we can do work instead.
05:10:17filwit^ exactly
05:10:23skrylarAnd yes, there is also the benefit that six different libraries will look the way *you* want to use them, instead of the miniature hell of "SDL_SemiCaps(ftdothings())"
05:10:24Demos_I really just want generics to work correctly
05:10:40Demos_or rather I want a definition of "working correctly" and then I want that
05:10:50skrylarlol
05:10:51filwitplus it makes things more care-free in terms of compiler mistakes (accept that Nimrod also it very touchy in other areas like comment indentation)
05:11:06skrylarthere is at least a good reason for that; it lets comments be used for things
05:11:37skrylarall though elastic tabstop would be pretty cool too
05:11:43filwitskrylar: i think it should be optional, and off by default
05:11:49Demos_essentially I think that nimrod does things so differently (dare I say correctly) that people who are really used to the way C/C++ does things will be spooked
05:11:59skrylarfilwit: off by default just brings back the arguments
05:12:03xtagonI'd love to be able to use tabulators for indentation. But I doubt anybody cares or feels the same way
05:12:15Demos_there is a very good reason for disallowing tabs
05:12:28Demos_if you accedently mix tabs and spaces it creates hell
05:12:47filwitskrylar: well the biggest (and only) problem is IDE adoption. Most text-editors aren't going to know exactly where to place the '#' unless they understand the AST
05:12:55skrylarDemos_: moonscript solved that by defining what a tab means to the compiler and documenting it; but that's just a style&tool argument again
05:13:02xtagonI've never accidentally mixed tabs and spaces. Makefiles use tabs for indentation and I've never had an issue with them
05:13:02filwitskrylar: i use Kate, but can't use block-comment/uncomment because of this
05:13:02skrylarDemos_: but thats not what an elastic tabstop does anyway
05:13:34skrylarelastic tabstop is a neat concept that basically uses a character as an indendation marker, then it automatically aligns those markers up in the renderer
05:13:51filwitxtagon: mixing tabs and spaces is a very bad idea with white-space-significant code
05:13:52skrylarso you get the option to set indent level without borking text alignment
05:14:00skrylarbut this requires tool support
05:14:03Demos_liek '&' in LaTeX's align envirenment
05:14:42Demos_I am impressed with nimlime and VisualNimrod is coming along again
05:15:07filwitDemos_: there's a VS plugin in the works?
05:15:32skrylarI think a decent nimrod IDE that supported elastic tabstop, the style-insensitive parser and integrating nimrod pretty would lead to a pretty argument-free environment
05:15:42filwitDemos_, if so, that's awesome (though i would much prefer to see a cross-platform IDE like MonoDev supported over VS)
05:15:43skrylarthat was basically what the SCID concept was meant to do
05:16:06Demos_yeah it supports highlighting, building, and project navigation
05:16:19filwitDemos_, that said, VS support would probably go much further than MonoDev support in terms of gaining attention
05:16:21Demos_should have completion by the end of the week (I hope)
05:16:38filwitDemos_, nice man, good work!
05:17:01*r0b1 quit (Ping timeout: 264 seconds)
05:17:09skrylaranyhows, i should get back to reinstalling windows on this machine; ubuntu has given me too many migraines lol
05:17:27filwitthat's cause Ubuntu :P
05:17:33filwituse Manjaro
05:17:35skrylaryeah i used to use mint
05:17:41xtagonWhen GNU/Linux gives you migrains, just try another distro ;)
05:17:45Demos_yeah I started it a few months ago and it has been kinda on hold with classes. The VS plugin API makes me want to stab myself with a rusty spork
05:17:50skrylarBut the fact that you have to play whack-a-distro is one of the primary failures of linux
05:17:52filwitMint is not much better, unless you use Mint Debian
05:17:59filwiti can't stand non-rolling distros
05:18:12xtagonI consider the fact that I get to play whack-a-distro until I find one I like a feature of Linux
05:18:20Demos_yeah I installed ubuntu and it was crashing and panicing everywhere, went back to arch
05:18:32filwitskrylar: yeah the many distro game is a problem, but it's getting better really
05:18:45Demos_you could use a *BSD
05:18:47skrylarI kinda like how the BSDs take responsibility over their system and you can safely say "I use FreeBSD" or "FreeBSD has this problem" without people getting in to the whole "NO NO THIS IS JUST THE KERNEL" b.s.
05:18:51filwitskrylar: but if you like Windows, by all means use it. I would just dual-boot though for testing
05:19:21skrylarfilwit: i actually don't like windows, but the tools i need just aren't here on nix
05:19:27Demos_I /really/ want windows to support booting off something like btrfs or zfs. Never gunna happen thouhg
05:19:41filwitskrylar: accept that BSD is quickly becoming the same thing as Linux in that regard. It's all about popularity and open-source that causes "fragmentation"
05:19:53skrylarI mentioned doing audio work a while back, and linux is about on par with studio software 20 years ago. lol
05:20:16filwitskrylar: interesting. all my best tools are Linux things these days
05:20:39skrylarfilwit: i haven't found a good non-orgmode outliner, and most of the audio softsynths i ran in to were poorly built
05:20:43filwitskrylar: but mostly because i chose to migrate to linux awhile ago and haven't used Windows in awhile
05:20:58filwit(beyond VS and Unity3D that is)
05:21:17skrylari actually still miss my OSX; but eh.
05:21:27filwitskrylar: i don't even know what a non-orgmode outler or audio softsynths is.. lol
05:21:44skrylarfilwit: outliners are for organizing / heavy writing
05:22:05filwitskrylar: have you used KDE and KAuthor?
05:22:18skrylarfilwit: and a softsynth is kind of like a computer version of a guitar/piano
05:23:18skrylarfilwit: KDE yes, KAuthor no
05:23:53filwitskrylar: my main tools, besides coding, are art tools, and I switched to FOSS awhile ago and haven't needed to look back. Blender/Gimp/Inkscape/Krita all run much better on Linux than Windows, so I stay in Linux most of the time I can
05:24:05skrylarKrita is nice, I will admit
05:24:48filwitskrylar: yeah, KAuthor is for heavy authoring, not sure if it's what your looking for but it's pretty nice in terms of usability (granted i don't have much to compare it too)
05:25:01filwitskrylar: what tools do you use on Windows for these things?
05:25:02skrylari can't even find kauthor with targeted searching
05:25:24skrylarfilwit: well on my mac, i used notebook http://www.circusponies.com/ and tinderbox
05:25:28skrylarwell, wanted to use tinderbox
05:26:06skrylarNotebook is vaguely Onenote with bulleted lists on steroids and a neat app skin to look like a book
05:26:09filwitwait.. so you want a fancy notepad program?
05:26:30filwitwhy not use Google docs and stuff?
05:26:34Demos_my advice is to get a paper notepad
05:26:40filwit^ lol
05:26:40Demos_nothing like actually writing stuff down
05:26:46Demos_seriously
05:26:48skrylarbleh, i hate handwriting :)
05:27:36filwiti can understand switch OSes for the sound tools, but a notepad program? there's got to be something on Linux that is basically good enough unless you're really picky about features
05:27:57filwitwhat about the Benjin program or whatever it's called?
05:28:13skrylarnever heard of it
05:28:13filwitI'm on Windows right now, or i would look through my KDE programs
05:28:21filwitlet me look it up
05:28:41skrylarBut yeah, 300$ of audio software is my present motivation to switch the computer back over
05:28:58skrylarespecially after spending a good six months demoing linux options
05:29:26skrylarwith great hits like qtractor deciding i don't actually need those MIDI notes to get recorded when i ask it to. haha
05:29:29filwitskrylar: http://worldofgnome.org/bijiben-3-11-5-and-owncloud/
05:29:54Demos_YES! I just figured how the fuck to get a reference to the active project in VS
05:30:03Demos_jesus christ that was harder than it should have been
05:30:15Demos_two casts and the use of an internal object
05:30:23filwitskrylar: yeah if you have a lot of audio windows-only tools you should probably use that. Still i would recommend dual-booting
05:30:28filwitDemos_: nice!
05:30:47skrylari might set up a dual boot again some time later
05:30:52filwitDemos_: ps. no idea what you just figured out, but good job!
05:30:54filwitlol
05:30:57Demos_skrylar, you could run windows in KVM
05:31:01skrylarwhat i've been doing so far is one computer was dedicated ubuntu and the other is dedicated windows
05:31:06*q66 quit (Quit: Leaving)
05:31:26filwitskrylar: dual-boot is really good for benchmarking different OSes
05:31:51skrylari did actually write a book in linux using wine for quite a while
05:32:01filwitskrylar: you wrote a book?
05:32:10skrylari did
05:32:13skrylarnanowrimo 2013
05:32:13filwitskrylar: i'm a bit book-worm :)
05:32:17filwitbig*
05:32:28skrylari was one of those scrivener derps for a while
05:32:37Demos_skrylar, you should write a book on nimrod once 1.0 comes out!
05:33:09filwitskrylar: mind if i ask what book you wrote?
05:33:20skrylarfilwit: it was never published
05:33:26filwitah, too bad :(
05:33:30skrylari should still have it around to clean up as a PDF
05:33:45filwitwhat genre ?
05:33:53filwiti'm a fantasy/scifi guy
05:33:55skrylarfantasy/fiction
05:33:58filwitnice
05:34:11filwiti've always wanted to write a book.. but never have the time
05:34:39skrylarIt really sucks when you decide to do it in a month and then realize the only thing you have to go on is the vague idea of something you did before
05:35:30filwityeah you probably have to be pretty dedicated. I really love Brandon Sandersons work, and he's a machine with writing (like 5+ books a year)
05:35:47skrylarThen you find out, most people actually spend all year developing characters and outlining the story instead of just going "I WILL DO IT ALL NOW" xD
05:36:14*Demos_ quit (Read error: Connection reset by peer)
05:37:05filwityeah. i've read a lot of novel (100+) and can narrow down my favorites to a consistent story-arch graph almost, haha
05:37:25skrylartheres a website about the snowflake method which goes over the 'correct formula' for fiction
05:37:44filwiti've often thought that if I ever wrote a book, i would just plot the story events along that graph and i'd have a best-seller haha
05:38:10skrylarthere's cool stuff like Aeon Timeline that helps with that; it makes these pretty timelines and tracks events you throw in it
05:38:14skrylarI ended up not using it at all though
05:39:51filwitnovels are probably like indi-games.. lot of competition and hard to actually get reconized
05:40:32skrylarjust have to finish them, really; then go bother tons of agents until you get one that wants it
05:40:40filwitthough idk, I've gotten some of those free-amazon books for kicks-n-giggles before, and they're always pretty lame (accept Emperors Edge, that was excellent)
05:40:49skrylarbut i don't want to be a professional author, and they recommend writing several books in a row because it will take years to get the first one published
05:41:09filwityou can self-publish on Amazon now
05:41:17skrylarjust because you can doesn't mean you should, lol
05:41:35*Demos joined #nimrod
05:41:37Varriount|MobileI dream of writing a fiction novel one day...
05:41:37skrylari remember seeing this one horrible book sample on amazon that was like
05:41:56filwityeah seriously... some of those books i got off self-published amazon i couldn't make it a 5th way through they where so damn lame
05:42:09skrylar"due to political reasons we are unable to reproduce so i have come back from the future and we have decided to sex everyone up here for great glory" or some equally cringe-worthy "... wut?"
05:42:18skrylaryay crap-fi \o/
05:42:34filwitlol
05:43:09skrylarsomeone was trying to get me to write this one dream out as a book, which involved the planet's orbit stopping and so they built a huge axle to make it spin manually, until some cult decided to terrorize the world axle
05:43:26filwiti found this really good book series on there once (Emperors Edge) and ever since them I try the highest rated freebies out now and then... i don't even know why though.. they're all horrible..
05:44:15filwitskrylar: lol wut.. that sounds either very un-scientific or a very cool alien twist
05:44:28Varriount|MobileThe hope for finding the diamond in the dross
05:44:42filwitdross?
05:45:05Varriount|MobileTerm for junk found during mining.
05:45:35Varriount|MobileSpecifically metallic ores, iirc
05:45:36filwit(ps, we're completely spaming #nimrod right now... Araq's gunna be anoyed when he ways up trying to read the back-log, lol, sorry man ;P )
05:45:37skrylarfilwit: steampunk physics in dreams \o/
05:45:57skrylarfilwit: just git-rebase it all in to the offtopic channel that was never sanctioned lol
05:46:22fowlwhatsw steampunk physics
05:47:00Varriount|MobileI deal with sketchy physics in fantasy novels by just imagining that the entire book takes place in a universe with alternate physics.
05:48:27Discoloda#nimrod-offtopic exists
05:48:38filwiti really don't like books where things are completely undefined. I always hated things like LOTR where Gandolf can randomly shoot lightning out his ass and save the day in a way you never saw coming..
05:48:54skrylarasspull@tvtropes
05:49:11filwitDiscolada: oh rly? thanks we should probably move this convo over there guys, really
05:49:34skrylarthats sort of a sad trope because the way you avoid an ass pull is to telegraph and that can get equally boring when you start calling al of the plot twists because of what they set up in advance
05:50:04filwityeah, but if it's done cleverly it's a lot better, IMO
05:50:22filwiti really like Mistborn and Way of Kings cause they do it right
05:50:53filwit(ps, i can't figure out how to join a different channel on this crappy web IRC..)
05:51:18Discoloda. /join doesnt work?
05:51:35filwiti'm a IRC newb, didn't know you could do that
05:51:53filwitworked, thanks
06:08:45Demoswow pipelight is using 300% of my CPU
06:09:57filwitcause Wine
06:10:14filwitwait.. 300%.. how?
06:10:20filwitstatistically impossible..
06:11:36Demoscause wine
06:16:49DemosI think it does CPU decodeing of the video
06:18:15xtagonIs there a builtin proc to unshift or shift a seq? All I see in the docs is pop
06:19:57DemosI doubt it, shifting is slow
06:23:45*xtagon quit (Quit: sleeeep)
06:24:16filwitPipelight works pretty much perfect on my machine.. but then my machine is good and i'm using Arch
06:24:25filwitNever looked at the CPU usage though
06:24:35Demosit is smooth but the cpu usage is hight
06:28:28filwitThe CPU usage is tooo damn high!
06:30:26Varriount|MobileShe can't take much more o' this capt'n!
06:31:06DemosI have been trying to get primary VGA passthrough working so I can just use netflix in KVM but primary VGA passthrough is hard to do since you need to disconnect the VGA from the host before connecting it to the guest
06:32:01*BitPuffin quit (Ping timeout: 264 seconds)
06:32:34Demosturned quality to low and CPU usage went down quite a bit
06:34:47filwithow do you adjust the quality?
06:34:59filwitright-click?
06:35:06filwit(not on linux or i'd try)
06:35:19Demosin account options
06:35:51filwitk i'll look next time i reboot
06:44:52Araqseriously guys
06:45:23AraqT/P are about value vs reference based semantics. That has always been the reason.
06:45:24DiscolodaAraq?
06:45:46AraqI *copied* Pascal often and changed it into something meaningful
06:46:18AraqDelphi uses 'T' for classes which have reference semantics and so Delphi's convention makes no sense.
06:47:20AraqLikewise the need for symbol forwarding stems from nimrod's macro system.
06:47:47Araq"having a fast 1 pass compiler" was not the reason to do it this way and never has been.
06:48:04AraqNimrod uses 3-5 passes anyway.
06:50:34AraqI don't disagree it looks like straight from the 80ies in places, but you should know better in #nimrod. ;-)
06:57:55Varriount|MobileHi Araq!
07:11:29*DAddYE quit ()
07:12:01skrylari already removed the T/P from the skutf code on github; all though the styleinsensitivity is something i'm attached to
07:12:32*Varriount_ is now known as Varriount
07:12:49VarriountMy goodness Earthbound has some wierd enemies.
07:13:36skrylarEarthbound (NES)?
07:13:42skrylarwell, snes
07:13:58VarriountYep. (On my phone, using an emulator0
07:14:43VarriountEarthbound and Mother 3 are the best rpg games I've ever played.
07:14:58skrylarearthbound is such a strange game overall
07:15:41Varriount"Demonic Petunia became Tame" <- WTF?
07:16:24VarriountIt's the only game I've played where you have to face melting clocks and cups of coffee as enemies.
07:17:22DemosSounds like "The Void"
07:17:50Varriount"The Void"?
07:18:39DemosRussian game
07:18:43Demosvery strange
07:20:16skrylarthat one sounded interesting but when i talked to people who played it, they said it was 'russian hard'
07:22:34VarriountOooh, another strange game -> http://jayisgames.com/archives/2013/06/undertale_demo.php
07:25:26DemosI also recomend "The Precursors"
07:25:31Demosvery good russian game
07:25:49Demosand with that I am oging to go to sleep
07:30:01*Demos quit (Ping timeout: 240 seconds)
07:59:15Araqskrylar: yeah I'm collecting data about the style-insensitivity now and will blog about it
07:59:53Araqtitle of the blog post is most likely "consistency is a poor man's approach to correctness"
08:02:08Araqzahary1: have a look at bug #966
08:02:20Araqseeems to be caused by the new delegators
08:55:01VarriountAraq: Is the style sensitivity option something that can be altered by the push and pop pragmas?
09:03:21skrylarVarriount: how would that work? if one module has strict mode on and another doesn't, what does strict mode have to do to use the nonstrict code?
09:04:11skrylarright now its a global compiler flag IIRC because it turns off normalizing identifiers
09:11:52filwithey Araq
09:12:26*Endy joined #nimrod
09:17:12Araqhi filwit
09:17:19Araqyou're doing a great job on reddit :-)
09:28:53filwithey, glad you approve man
09:29:43filwiti realized after i came here that i didn't truly know what the final direction was for the T/P thing but my second post kinda hinted at being removed
09:30:00filwiti don't mean to advertise something that you're against
09:31:59filwitanyways, i saw that guys post about a "potential future language" and though it would be a perfect opportunity to plug Nimrod a little :)
09:32:36filwitseems like it was approved by the larger reddit community which is a good sign :)
09:33:59filwiti really wounder if that's because it's new to those people or because it's becoming familiar. I would guess that later
09:35:22AraqI'm playing with the idea to disallow upper cased letters ... lol
09:35:40Araqso there is only foo_bar_baz possible and everybody uses that
09:36:19Araqand ultimately we'll get rid of fonts that make _ look like a thing of the 70ies
09:36:27filwiti really think that would be "bad for business" and i personally wouldn't like it
09:37:12filwitwait get rid of fonts? are you just joking.. i'm a bit confused
09:37:27AraqI prefer fooBar too, but thinking about it, it makes perfect sense
09:37:44Araqwell I'm not serioulsy suggesting this change, of couse
09:37:56filwitoh, i thought you where..
09:38:00Araqbut it does make perfect sense...
09:38:21filwitidk really, what's so much better about it than have just case-insensitivity?
09:38:25filwitwhat does it fix?
09:38:48Araqwhy do we have Z and z in the first place? it just creates another option to misspell things
09:39:05AraqChinese does fine without upper cased letters
09:39:39filwityeah i actually thought once you could make a editor which would auto-inject the '_' mark
09:39:48filwit(when you press space)
09:40:03filwitso typing code would feel more like writing language
09:40:14Araqwhy do we have 2 ways to write the same letter? why not 3 or 5?
09:40:35Araqit's just some crappy cultural artifact
09:40:52Varriount|MobileGerman has ß
09:40:55filwithaha, araq is getting deep
09:40:58filwitbut it's true
09:41:14filwitit's pretty pointless if you think about it
09:41:41rixxVarriount|Mobile: yes, and russian has a different alphabet, and romanian has some letters from the cyrillic alphabet
09:41:49filwitplus theses day's it's just a psuedo-class thing. Oh, you didn't use correct grammer, you must be dumb
09:42:01filwitwhen no one texts with correct grammar
09:42:07Varriount|MobilePointless it may be, but you will never get me to willingly, purposefully use "i" instead of "I"
09:42:13filwitkinda a pointless formality
09:43:07Araqhappiness comes from eliminating choices
09:43:31AraqI take away the upper letters and make everybody happy
09:43:58AraqVarriount|Mobile: ß has an uppercased representation now. but nobody noticed.
09:44:20Varriount|MobileWhat is programming, but a series of choices to bring about a desired solution?
09:44:24*Araq bets less than 1% of all germans know about it
09:44:25filwithaha damn, i'm sure there's some "german nazi" joke in there somewhere, i just can't find it :P
09:47:14filwitso wait German doesn't use upper-case either?
09:47:27Araqit does
09:47:41Araqß used to have no uppercased representation as it never starts a word
09:47:42filwiti didn't even think about asian-languages capitalization before you mentioned it
09:47:53filwitahh, i see
09:48:12filwitbut they made it so folks could YELL IN CAPS?
09:48:23Araqyes, exactly
09:48:35AraqALLCAPS is even on the passports here, lol
09:49:16filwiti haven't seen a passport in awhile, couldn't tell you what ours look like
09:49:16*Matthias247 joined #nimrod
09:49:20Araqmeaning if your name is Gruß it became GRUSS
09:49:36Araqand if your name is Gruss it became GRUSS too lol
09:49:54Araqon the passports
09:50:01filwitis Gruss a common German name?
09:50:08Araqnah, I made it up
09:50:08filwitnever heard that one before
09:50:15filwitoh, i see
09:58:10rixxAraq: nah, I think more people know about ẞ
09:58:47rixxI think it was even mentioned in elementary school once
09:59:18rixxand I think I've seen it in advertising, too
09:59:25filwiti wounder if kids still get taught cursive in elementary school here
09:59:31filwity'all have cursive in german?
09:59:44rixxyup
10:00:06AraqI'm not sure it's still taught
10:00:09rixxbut they teach it later nowadays, I think
10:00:37rixxit is still taught, seen my siblings use it
10:00:48rixxand they are 10 and 8
10:01:02filwitthat sounds about right
10:01:15rixxbut they started pretty late
10:01:18Araqelementary school is mostly to teach children that one can cook his own lunches and that one can move backwards
10:01:27rixx:D
10:01:57rixxAraq: and how to deal with other children and being a little silent in class ;)
10:02:04rixxwell. not too loud, maybe
10:02:07filwiti don't get the expression :|
10:02:32filwitdo you cook your own lunches in german elementary school or something?
10:02:48filwitor is that just a phrase i'm unfamiliar with?
10:03:08rixxwould probably be better than the stuff they serve there
10:03:17filwiti watched this german movie called "the wave" once which was pretty good
10:04:04filwityeah our cafeteria food was gross too. public schools don't exactly feed the students brain-food
10:04:06rixxah, well. not exactly representative of our educational system though
10:04:39filwitthey do alright though i suppose, it's just they give you pizza & cheeseburgers as options... what kid is going to pass that up?
10:04:56*Varriount|Mobile misses German bakeries.
10:05:49filwitoregon has some really good food that i miss
10:06:12filwitthe only place you can eat vegetarian and actually have a good meal
10:06:24filwitat least in my experience in the US
10:06:40filwitwell no, California had souplantation which was good too
10:06:50rixxfilwit: ah, no, they serve real food here, but it's … think mashed potatoes made from instant powder >.<
10:07:14*rixx stopped eating that stuff after fourth grade and just brought her own lunches
10:07:40filwityeah I have a Hungarian neighbor, and he's made some really good Hungarian and German dishes for us before.
10:07:51filwitbut they where both very rich
10:08:49rixxwell, really good German dishes don't require you to be rich
10:08:57rixxHungarian ones neither, actually
10:09:07rixxHungarian ones even less
10:09:22rixxdamn, now I wanna make Hungarian Goulash
10:09:50filwitwell he's not the healthiest person alive, and i'm sure there are unhealthy people everywhere. Still, his dishes where tasty :)
10:10:01filwityeah it was Hungarian Goulash that he made too
10:10:18filwitwith just chopped potatoes and chopped pork or something
10:10:27filwitand some sort of sauce
10:11:29filwitgood combo really. I like the "classic american" cookout food too (probably not from america): corn, bakedbeens, burger/hotdogs
10:12:09filwitbut if i had to pick a perfect meal (since' i'm making myself hungry right now) i would probably choose steak and potatoes and broccoli
10:12:38filwitwith A1 steaksauce and a beer (only time i actually like beer is with that combo)
10:13:22filwitprobably should stop spamming #nimrod with food posts
10:16:59Araqnah it's fine
10:18:32rixxweeell, now I have to choose: Goulash for the whole hackerspace ooor studying for my exam
10:18:56rixx(exam is about formal languages/automata and compilers, so there's that)
10:20:19filwiti haven't seen you around before rixx, are you new?
10:20:33rixxfilwit: yup, just getting started with nimrod
10:20:46filwitcool, and welcome
10:21:07rixxthanks :)
10:21:28filwitif you're researching languages then you're in the right place ;)
10:21:53rixxyep, a friend of mine pointed me this way when I was complaining about Python's lack of static typing (Python being my language of choice for all private projects, because it's so damn convenient)
10:22:26rixxwell, he first tried to get me to use Ada, as always, but then he told me about Nimrod and I chose to give it a try
10:22:47filwitnever really used Python besides hacking on Blender UI, but I'm kinda apposed to dynamically-typed languages in general
10:22:56rixxstill gonna do my next project in python, though, because I wanna get through with it fast ^^
10:23:00filwitwe where just talking about that the other day
10:24:10skrylarAda is neat but the tooling is eeeh unless you pay
10:25:08AraqAda is simply not the right tool unless you care about bounded memory usage by construction
10:25:22rixxAda sounded pretty neat after everything my friend told me. I was basically left with saying "Yeah, but I don't wanna program tanks"
10:25:35Araqit sucks when it comes to resizable arrays and strings
10:25:48Varriount|Mobilerixx: We have a user in here who is working on some neat CPython interfacing lib
10:25:49Araqbeen there, done that, decided nimrod is necessary
10:26:56Varriount|MobileProgram tanks?
10:27:20rixxafaik that's one of the things Ada is actually used for
10:28:03filwiti've heard it was developed by some military, but that's about the extent of my experience with Ada
10:28:12filwitlooked at it once and didn't like the syntaxd
10:28:26Varriount|Mobilerixx: https://github.com/micklat/NimBorg
10:29:18rixxnah, Ada is pretty nice, but I'm so not into Pascal-like begin/end syntax
10:29:30Varriount|MobileIf you want to use python from Nimrod . If you want to use nimrod from python, I'd suggest just using cffi and exporting C procedures.
10:30:02rixxI don't really plan on using the two together
10:30:50filwiti have always been more of a C-style person (just what i am used to), but Nimrod's made me appreciate indent-style
10:31:10filwitit can be easier to shift blocks of code around when you don't have curly-braces
10:31:59filwitbtw, Araq, you mentioned removing comments from the AST, you still plan on that or did you change your mind?
10:32:28filwiti brought it up last night and someone said they like it being part of the AST, but i forget who and why
10:33:38filwiti just think it would make support Nimrod on simple text editors a bit easier, but other than that i could care less really
10:34:32Araqyeah that's still in the pipeline
10:34:43AraqI think only doc comments should be part of the AST
10:35:00Araqyou're talking about alignment of comments though, editors don't care about ASTs
10:35:16Varriount|MobileIf you want regular comments in the ast, make them doc comments
10:36:05filwitAraq: right
10:36:40Araqfilwit: so apparently we need more bikeshedding before the people can accept nimrod's syntax
10:37:03filwitlike i've been saying man :P
10:37:27filwitactually some things about Nimrod i've really started to appreciate in terms of style
10:37:44Araqwell the *real* reason is simply a lot of inherent disrespect for my work as I didn't invent unix
10:37:46filwitbut i still think there's some inconsistencies that could help
10:38:06rixxoh, damn, Araq, you didn't? what am I doing here then?
10:38:06Varriount|Mobile"Nimrod: Just like that deadly space fungus, it grows on you"
10:38:15Araqbut so be it
10:38:24filwitAraq: yeah, unfortunately people are pretty picky, it's true
10:38:27rixxAraq: I thought you were the secret child of K&R or something
10:39:16*EXetoC quit (Quit: WeeChat 0.4.3)
10:39:28filwitAraq: i'm sure no-one disrespects your work, it's just not everyone needs the performance of C, so that leaves them with other GC languages they might prefer the syntax of.. so syntax is important
10:40:24filwitstill, there are a lot of people from Python/Ruby that seem attracted to Nimrod's syntax as-is
10:41:22filwitit's the C++/C#/Java crowd that seem to have very rigid ideas about what's right/wrong with syntax
10:42:34filwitthat said, I kinda actually agree with many of C#'s designs.. like "str + str" for concatenation
10:42:38Matthias247filwit: actually I though the same when I first looked at Nimrod. But it's simply the unfamilarity
10:44:04filwitMatthias247: yes but i hear that a lot. and how many people look at it and simply turn away? Some we will never get because they're too set in there ways, but other things could probably help people accept an unfamiliar thing if it has good reason too it
10:44:41filwitit's true it's rather arbitrary when it comes to syntax, but some things are also a bit universal
10:44:50filwitmath, strings, lists, ect
10:46:54*r0b1 joined #nimrod
10:46:58*r0b1 quit (Changing host)
10:46:58*r0b1 joined #nimrod
10:46:59filwitthose things have a lot of cross-over, and if people can just look at something and think 'that make sense' (like "hello " + p.name + ".") it could help grow the language. at least, I think it would.
10:47:30filwitultimately though, these things could be also changed after Nimrod 1.0, and it might be a better plan to do so
10:47:36filwit(if they get changed at all)
10:47:39dom96gutten morgen
10:47:59filwitmorning dom
10:48:38Varriount|MobileI think the dynamic language crowd is attracted to nimrod because nimrod gives many of the benefits that a dynamic language normally has.
10:48:49dom96My worry is that we will become too much like C if we fold to people's demands too much.
10:49:33filwitnah, the language already is leaps and bounds better than C because there's no ending marks and no headers
10:49:54Varriount|MobileLet's add braces. And mandatory semicolon delimiters >:)
10:50:06filwitplus the ref/ptr/addr syntax is way better (because they're descriptive)
10:50:10Araq"+" for concatenation is wrong
10:50:17*io2 joined #nimrod
10:50:21filwitAraq: i disagree
10:50:29filwitAraq: cause of "commonality"
10:50:32Araq@[1,2] + @[2,3] # what does it do?
10:50:48filwitthat's [1,2,1,2]
10:50:56Araqin nimrod it's not ambiguous
10:51:12Araqand it's @[3,5]of course ;-)
10:51:15filwitif you did this: @[1,2][] + @[2,3][] it shoudl be addition
10:51:21rixxwat
10:51:34rixxAraq's version is much more intuitive
10:51:45filwitAraq: i know what it is in Nimrod, i just meant what i think it *should* be
10:52:08filwitand i mispelled, i meant [1,2,2,3]
10:52:32Araqwell lifting via `[]` is awful though
10:52:49filwitrixx: i dissagree. i think if you took a poll most people would understand: mylist + otherlist as concatenation not addition
10:53:10filwitthe reason is because often list's are not just numbers
10:53:36rixxfilwit: maybe I'm thinking too mathematically
10:53:45filwitso it's a wider application to use the most common symbol of addition '+' for the most common _application_ of lists (joining)
10:54:02rixxdoesn't make it right, though
10:54:05filwitmylist + other list (join); mylist += node (add)
10:54:16Matthias247for lists I find + to e ambigous and would prefer named operators (join, add)
10:54:23rixxbut I like Araq's versin better, and I agree that appending [] to change the meaning is pretty horrible
10:54:32filwitrixx: that's why i was saying do this for add: mylist[] + otherlist[] (addition)
10:54:34Matthias247however for strings I find + for concetanation naturally
10:54:58Araqcould easily be done, Matthias247
10:55:00filwitrixx, Araq: then you can also do things like this: mylist[0..5] + otherlist[5..10]
10:55:15rixxI don't. I got used to + concating strings, but I don't think it's nice
10:56:14AraqLua uses '..' fwiw, Perl uses '.'
10:56:22Matthias247And Qt uses %
10:56:33Matthias247which is totally strange
10:57:26filwitAraq: neither of those 'imply' addition, which is why they're worse than '+'
10:57:42Araqwhat? o.O
10:58:15Araqconcatenation has nothing to do with addition except for the fact that afterwards result.len == a.len + b.len
10:58:33filwit./../% don't imply addition, while '+' is taught to us to mean 'add' and when you apply 'add' to lists you normally mean 'add together'
10:59:47filwitthat's pretty much as simplified as i can make my argument
11:00:41filwitso if you can find fault in that, sure i'll take it. Ultimately you'd have to take a study about what "most people" associate when you "imply" addition of strings (math or join), but I'm assuming that later
11:01:20*[1]Endy joined #nimrod
11:02:42Araqfor english speaking people, perhaps you're right
11:03:20filwitthat's what i mean, "most common" unless something else becomes the world trading language
11:03:40Araqin German it never occurred to me to conflate "hinzufügen" and "addieren"
11:04:24*Matthias247 quit (Read error: Connection reset by peer)
11:05:01*Endy quit (Ping timeout: 264 seconds)
11:05:02*[1]Endy is now known as Endy
11:05:20filwitAraq: interesting you guys have two words for 'add'? i mean i guess english does as well, but the common 'math' term is always 'addition' which is part of the crux of my argument
11:06:33filwitAraq: based off google-translate, it looks like the first word is more like 'append' and the second is more like 'addition'
11:06:34dom96wow. Mozilla spend 115K per month for the CI
11:07:05filwitCI?
11:07:33dom96continuous integration
11:07:37dom96http://taras.glek.net/blog/2014/02/06/cost-efficient-continious-integration/
11:09:12Araqfilwit: yeah
11:09:18*ponce__ joined #nimrod
11:09:26*brson quit (Quit: leaving)
11:09:30Araqhi ponce__ wb
11:09:34ponce__hi!
11:09:47ponce__I hate to make language suggestions but
11:10:24Araqno worries, go on
11:10:28ponce__I thought about just "public" and "private" sections as a * replacement
11:11:01Araqbrb
11:14:20filwitpounce__ i suggested something similar on the forums already: http://forum.nimrod-lang.org/t/381/3
11:15:33filwitpounce__ ultimately changes like that will probably take a lot of discussion before it would be changed (if it changes in the near future at all) because it would probably require a lot of work and there are somewhat bigger issues to address (like IDE tooling and things)
11:16:36ponce__I only say that because I see people complaining, I suspect that the current syntax is more readable
11:17:09ponce__especially if couloured differently in IDE etc
11:17:46*EXetoC joined #nimrod
11:18:34filwitponce__ i agree with you though, i think there could be a better solution to the '*' too, but ultimately that's probably the least needed syntax change in Nimrod ATM
11:20:25filwitponce__ though it is brought up a lot, probably because it's confused with C's semantics
11:20:30dom96filwit: I would still love an Aporia logo if possible.
11:21:23filwitdom96: okay i'll get around to making you one. Just last few times I tried i could tell you didn't really like the designs.
11:21:45ponce__compiling HEAD babel with HEAD nimrod compiler makes: "babelpkg\packageinfo.nim(4, 14) Error: cannot open 'version'"
11:22:04ponce__what did I do wrong?
11:22:23dom96filwit: Yeah, sorry. :\
11:22:28filwitdom96: i've been meaning to sit down and do a bit of design touch-up/artwork/mascot changes to Nimrod for awhile and layout a visual design for the docs
11:22:53dom96Better design for docs is more important.
11:22:56dom96Do that first if you can
11:22:59filwitdom96: no problem man, i'm not asking you to like all my design :P just that means it takes a little longer
11:23:22filwitponce__ use devel
11:23:49ponce__ok
11:25:15filwitdom96: i will and maybe we can work together on the HTML or something (where I do the front end and you modify the docgen?) I'm hoping we can add in some JS to make seaching for procs by type-association very convenient
11:25:39dom96filwit: sure
11:25:59filwitdom96: that would probably only require a hidden tag to be exported in the docgen along with every proc so i could search through them in JS
11:26:32*Varriount|Mobile quit (Remote host closed the connection)
11:26:46*Varriount|Mobile joined #nimrod
11:27:10dom96filwit: We need to be careful not to bloat the html too much though
11:28:32filwitdom96: it could be in the anchor tag, so <a name="jmpname" data-param="int float int")>
11:28:41filwitdata-params*
11:29:03dom96That's abusing html a bit heh
11:29:13filwithow so?
11:29:21*eigenlicht joined #nimrod
11:29:24filwitdata-* attributes are part of HTML5
11:29:24dom96Specifying a non-standard argument
11:29:29dom96oh
11:29:34dom96Didn't know that lol
11:29:35filwitno, it's a standard now
11:29:37filwityeah
11:29:55dom96Thought you just made up an attribute and added it in there.
11:30:02filwitlol, no :P
11:30:10filwitit will validate
11:30:32filwitas long as you use <!doctype html>
11:30:44dom96good
11:31:10filwityeah, it makes doing this sort of thing much easier
11:31:29filwitwas really happy when they i found out about that addition to HTML5
11:32:34filwitof course, before html5 there was xhtml which basically allowed the same type of things if i recall
11:32:53dom96ahh, xhtml. Good times.
11:33:06filwityep, haha
11:33:37filwiti still kinda prefer xhtml to html5 since it was consistent with it's </> instead of having some takes not require the /
11:34:03filwitbut it's been discontinued, so what are you gonna do
11:34:08dom96I like html5 simply because I can finally remember the doctype.
11:34:17filwitlol, good point
11:51:42*ddl_smurf joined #nimrod
11:54:16Araqponce__: tbh I understand how the "trailing" '=' for procs looks weird at first, how pragmas look strange, how type sections can feel 'off' but that the export marker continues to be brought up suprises me
11:54:40skrylari sometimes forget to type it
11:54:54skrylarfilwit: xhtml is still valid
11:55:18skrylarjust because some /'s are optional in html5 doesn't mean you can't still just export perfect XML all the same
11:55:18filwitskrylar: thought 2.0 was officially dropped
11:55:53skrylarfilwit: as a standard it might be abandoned (which is kinda dumb) but since it was largely just "proper html", you can still do that for all intents and purposes
11:56:12Araqit works nicely and has been designed after people noticed the interface/implemetation split of pascal doesn't work well. And it's not my invention, I took it from Oberon.
11:56:35skrylar(nb: i don't have a problem with the export marker, i just forget to type it a lot)
11:57:15skrylari should write a "reasons why nimrod seems derpy at first glance (but it really isn't)"
11:57:34filwitskrylar: yeah i know it still is accepted in browsers. i only meant it's not being promoted and supported to the level HTML5 now is. I'm sure there's some odd tablet browser that doesn't render correctly with it by now or something
11:58:14skrylari always had trouble with browsers accepting xhtml when passed as xhtml :\
11:58:21Araqpython uglifies private names with a leading '_'. how is that better? and more importantly: why isn't that constantly brought up against python? I find the other __builtin__ stuff equally ugly
11:58:54skrylarbecause python is used by NASA and dissing python = dissing NASA which is uncool
11:58:55skrylar:P
11:59:06Varriount|MobileAraq: Private names are rarely used in small projects
11:59:17skrylar(then again LISP is also used by NASA but nobody cares about that lol)
11:59:33filwitAraq: because it's a common style practice in other langauges like C whereas '*' mostly alien (although i agree with what you're saying)
11:59:36Varriount|MobileMost libraries use the __all__ variable to selectively export things
11:59:49filwitAraq: because _** is a common....
12:00:09skrylaramusingly people sometimes use _foo to mean private in C/C++ but this is in error
12:00:18skrylarthe spec says that anything starting with underscore is reserved for the compiler
12:00:41filwiti thought it was two underscores
12:00:43skrylarbut people wholesale ignore that and so compilers ended up having to use double underscore instead
12:01:03filwitat least it's not Dart where '_' is protected and '__' is private
12:01:18EXetoC:E
12:01:41skrylarbecause 'private blah blah' is too stupid
12:02:20skrylari think D allowed both C++ and Java styles for visibility, which IMO are more directly explicit than underscore soup
12:02:50filwitD reserves __ for the compiler, technically
12:03:01filwit__traits(..)
12:03:10filwit__XMM(..) // simd
12:03:21ponce__Araq: I guess it's frequently discussed because a line like "ip*: string" create confusion with the C pointer declaration
12:03:31skrylaraccording to IBM C its two underscores or one underscore and a capital letter+end of identifier
12:03:41skrylarso _fooBar is allowed but _FOOBY isn't
12:04:02filwit...
12:04:18Araqskrylar: that is correct
12:04:30Varriount|Mobileponce__: But after you found out that "*" was a visibility modifier, were you still confused?
12:04:47ponce__I think the * for public is a good idea
12:05:08ponce__that probably takes a bit of time to sink in
12:05:21AraqI have nothing against ! for public, it's like 1 line in the compiler to support that too
12:05:22ponce__once used to the C family
12:05:49skrylari'm not sure making concessions to C syntax is a great idea
12:05:53Araqvar s!: string # hmm
12:05:58skrylarthere's a certain point that if you're different enough you might as well do what you want
12:06:18filwitAraq: use ! for public and ? for package?
12:06:27*askatasuna quit (Ping timeout: 244 seconds)
12:06:28filwitAraq: i almost like the sound of that..
12:06:28skrylarkind of like how asian grammar is completely different to european grammars so its a full "well, i guess i just need to learn" trigger instead
12:06:40filwitAraq: then again, * and + make just as much sense really
12:06:43Araqfilwit: meh, don't start with "package"
12:06:47skrylarfilwit: protected isn't needed?
12:06:53skrylarprivate members are already visible to that module
12:07:03skrylar(admittedly people complained about this in D1)
12:07:10filwitAraq: :P just planning ahead for when it's so requested you have no choice but to add it.
12:07:21ponce__"package" visibility is seldom used in D
12:07:31AraqI don't even think it can work, filwit :P
12:07:56filwitwhy? it just exposes a symbol to only the files within the same folder?
12:08:21filwiti could see why that could require more work that it's worth right now, but impossible?
12:08:27ponce__http://pastebin.com/A0ihp2zQ < talking about visibility, I can't help but notice that "publicness" get repeated many times
12:08:51ponce__so I guess people talk about it because until our eyes are accustomed, it jumps out
12:09:04filwitAraq: then again, there might be a better solution with submodule & includes, so idk
12:09:23Araqwell it requires a notion of "package friends", filwit
12:09:31dom96I don't get this package visibility you guys are talking about.
12:09:41Araqcurrently there is an implicit notion of a "friend" module
12:09:43dom96Wouldn't the compiler need to be aware of babel even more then?
12:10:00dom96Also, if you change the export marker to ! I will actually leave and never come back :P
12:10:14filwitAraq: all files in the same folder would be friends like in D
12:10:19skrylardom96: also make sure that public members are in allcaps
12:10:31skrylarproc NEWTHING!(...)
12:10:33ponce__like the template notation in D (!), it's too much expressive ;)
12:10:42skrylarjust to complete the notion of shouting at users
12:10:54*psquid quit (Quit: work)
12:11:06dom96skrylar: perfect
12:11:14Araqproc foo+(a, b: int) # what about + then?
12:11:35skrylarproc `+`+(a, b: int) # not confusing at all
12:11:39filwitAraq: why change the '*' ?
12:12:00filwitskrylar: no different than proc `*`*(a, b:int)
12:12:01dom96skrylar: well to be fair: proc `*`*(a, b: int) exists.
12:12:08filwitjinks
12:12:12ponce__that would make http://pastebin.com/bPd3z9RT
12:12:23EXetoCdom96: no, package as in a directory in said project
12:12:37dom96EXetoC: So then we have two different definitions of "package"?
12:12:42skrylardom96: i will now hide under a mushroom
12:12:44dom96That's completely sane.
12:13:05EXetoCthe programming community?
12:13:08filwitwait, there's a current definition of package?
12:13:23Varriount|MobileI thought package private/public was only needed for silly languages that use the concept of packages
12:13:30dom96filwit: A babel package.
12:13:32filwiti thought it was basically just a path thing at the moment, anthing before the '.' in an import was a folder
12:13:38Varriount|MobileEg: java
12:13:42filwitfilwit: babel is part of the compiler?
12:13:51filwitdom96 ^
12:13:53Araqfilwit: because it looks like a pointer declaration and + only looks like UML
12:13:54dom96no.
12:14:01dom96well, it is a bit.
12:14:46ponce__how about public: blocks http://pastebin.com/RPhkdjCU
12:14:50dom96Araq: Seriously. If you want to appeal to everyone then you might as well just make a new D and call it "a better C".
12:15:24filwitdon't listen to him Araq, CHANGE ALL THE THINGS!!!!
12:15:45ponce__dom96: they would still differ in many ways
12:15:54Araqnow who is the angel and who the demon ...
12:16:06Varriount|Mobileponce__: Can be done with macroz
12:16:10dom96ponce__: That will result in too much indentation.
12:16:39dom96I was under the impression that human beings are intelligent.
12:16:43dom96And capable of learning new conventions.
12:16:53Araqdom96: you're wrong though
12:16:54EXetoConly some are
12:16:54filwitAraq: seriously though, i don't think changing * to + is a valuable change really
12:17:01dom96Is learning that * means "export" so hard?
12:17:04filwitAraq: i agree with dom96 on this one
12:17:13Araqfilwit: yeah I'm not serious
12:17:21ponce__dom96: no, but is "export" so valuable that it has to be on every line?
12:17:41dom96Araq: Gah. Stop joking around.
12:17:48filwitAraq: i can never tell
12:18:01dom96Araq: That's how you get quoted infavourably.
12:18:24Araqat least I get quoted. that's already better than getting ignored.
12:18:26filwitlol.. he's trolling his own IRC
12:18:52skrylarAraq: speaking of demons, when is the compiler going to support futhark
12:18:54dom96Araq: Be careful, you may regret it later :P
12:18:55filwitbecause everyone always talks about petty changes, he suggests the pettiest of them just to watch the reactions..
12:19:08skrylar[actually it probably does considering those are unicode alphas]
12:19:31EXetoCno but srsly, we need to extend the concept further, but allowing more than just optional begin/end and {} etc, if we do indeed get that
12:19:32dom96ponce__: That's true. For objects it is likely that you want to export every field. For that case it may make sense to add something like that, but I think a pragma may be nicer.
12:19:54skrylarisn't that something a macro could already do (or should be able to) :3
12:19:58EXetoCeverybody wins. "def p(x): ..."
12:20:07ponce__if public: private: blocks are possible with macros, might as well keep the current syntax and eventually wrap it when needed
12:20:19skrylarwell i meant a "make all fields public" macro
12:20:27dom96EXetoC: Funny. I was actually making a macro which allowed you to do that a while back :P
12:20:36skrylarall though yeah a certain template syntax would probably work too
12:21:02dom96ponce__: I think it would make sense to finally settle on an OOP macro, and let the OOP macro provide that.
12:21:20Araqoh yeah. dom96 is right
12:21:21EXetoC"go do_stuff()" -> ???
12:21:36filwitAraq: just realized i can make my macros use '+' instead of {.get.} to generate getters...
12:21:56dom96Araq: Indeed. I think we should add that for 0.9.4 together with a closure macro.
12:21:58Araqfilwit: so '+' for readonly?
12:22:06filwityeah basically
12:23:15dom96Oh and in regards to allowing pragmas to be used using the {pragma} syntax, I am fine with that.
12:23:31EXetoCdom96: well, if you could just push/pop inside a type
12:23:38dom96Aporia highlights pragmas anyway, so it should look pretty much the same to me anyway.
12:24:49filwitdom96: that means pragmas and sets will be highlighted the same unless you have more advanced semantic checking going on
12:24:52EXetoCand then you could group anything by visibility
12:25:03dom96filwit: oh damn. I forgot about sets.
12:25:18dom96In that case I change my opinion.
12:25:26dom96Pragmas should stay as they are.
12:25:51EXetoCI think .pragma. was proposed
12:26:34filwityeah i really have no problem with the existing */{..} syntax.. it's only the T/P thing and a select few type names (seq) and there operators that i have any problem with at all
12:26:53*nequitans_ quit (Ping timeout: 252 seconds)
12:27:08Araqfilwit: aliasing & to + for strings is *very* easy to do
12:27:23filwitoh, and the inconsistency with type/proc's use of :/= too.. but that needs more discussion
12:28:09Araqactually maybe we should do this instead, filwit :
12:28:10filwitAraq: i know, but people will always do what the docs say, and it's not like i don't know what '&' does.. i'm just saying for adoption purposes only. it makes things simpler, IMO
12:28:23Araqproc foo(a, b: int) is
12:28:26Araq echo a, b
12:28:38*askatasuna joined #nimrod
12:28:48filwitproc foo(..): int is ... ?
12:28:52Araqyes
12:29:06filwitnot bad. but what about types then?
12:29:20filwittype Foo is ...; type Bar: Foo is ... ?
12:29:24Araqtype foo = int # stays?
12:29:38Araqit's much more of an equals in this place anyway
12:29:47Araqconst foo = 3+4 # = makes sense
12:29:55Araqvar foo = 4 # = makes sense
12:30:20Araqproc foo: int = 4 + 5 # = also makes sense :P
12:30:26filwityes but those are fundamentally different (to the coder) than defining types/procs (even though const is somewhat both)
12:30:55filwitAraq: i don't dislike the '=' for procs at all.. i just dislike how type/proc makes different use of them
12:31:10filwitAraq: in fact i would probably prefer = to 'is'
12:31:35Araqfilwit: well what are you complaining about then?
12:31:45filwitAraq: but I still think types should be this: type Foo: int; type Bar: Foo = ...
12:32:01filwitbecause it matches what procs are like
12:32:13filwitand that's the closest idiom, not 'const'
12:32:20Araq'type' introduces a section, 'proc' does not
12:32:32Araq'type' is much more like 'const' already
12:32:39filwitonly cause you made it that way... proc could introduce a section as well
12:32:49filwitin fact i could probably add that in now that i know more about the AST
12:32:53Araq':' means "has type" '=' means "aliases type"
12:33:21filwit: doesn't mean "has type" for procs
12:33:30filwitit means "returns type"
12:33:56Varriount|MobileWhich is the single exception.
12:34:13Araqfilwit: yes, but you're not arguing for '->' are you?
12:34:21Araqproc foo -> int
12:34:37filwiti did actually, i just called it 'of'.. see my forum post
12:35:00Araq'of' is commonly spelled 'as' in Basic iirc
12:35:16filwiti would be fine with either if that's a concern
12:36:33filwitAraq: here's what I don't like about the differences between the '=' with type/proc: type T = U <body>; proc F:U = <body>
12:37:07filwitAraq: the stmt body follows the = for one but not the other
12:37:26filwitAraq: moreover, it's also different for if/else/etc statements
12:38:03filwitAraq: if we're talking about 'syntax cleanup' i would argue that any change which made things more consistent on all fronts would be the best direction
12:38:34filwitAraq: may not be possible, but then no change at that level would be an easy one, so probably shouldn't be jumped to anyways
12:39:00Araqagain, it's not U <body>, it's <body>
12:39:22Araqobject of foo\n a, b: int # is the <body>
12:39:36filwitbut i sure looks like 'U' body the way it's written, especially since you cant do object[...]
12:40:21Araqthat's a different concern then
12:40:44filwityou can't do: type Foo =
12:40:48filwit object of Foo
12:40:51filwit a: int
12:40:52filwiteither
12:41:17filwitwait.. can you?
12:41:19filwitone sec
12:41:33Araqlol I dunno either
12:42:14Araqbut either way, 'type' is not 'class' and so 'type' doesn't resemble 'proc'. I guess that's what it comes down to, you want them to be as similar as possible
12:42:27dom96For my closure macro I was considering also implementing some proc type sugar:
12:42:35dom96(int, string) -> int
12:42:54dom96But then that's a problem if you don't want a return type
12:43:04dom96You could just write void but that's not really in the spirit of Nimrod.
12:43:05EXetoC-> void?
12:43:08filwitAraq: didn't know you could put 'object' on the same line as the recList
12:43:09EXetoCright
12:43:15dom96Araq: What do you think?
12:46:53filwitAraq: it's odd how 'object of T' can be on the same line as the recList that follows it, or it's recList can be indented..
12:47:08Araqdom96: -> is to appeal to the math/FP people and so '-> void' is fine here, I think
12:47:57filwitAraq: personally I would love to see ':' replace '=' everwhere so that if/else/custom-macro was consistent with type/proc.. if it really came to it i would probably even prefer "const foo: 10"
12:48:13dom96Araq: Alright. I was also considering: ~(int, string) or something.
12:48:38filwitAraq: sorry, i meant "i think** i would love..."
12:49:28*Varriount|Mobile would rather not have any hasty language changing decisions made.
12:49:48dom96Let's just s/:/=/ :D
12:50:19Varriount|Mobilefilwit: You scare me. Is this revenge for me dropping that medical link earlier?
12:50:44filwitVarriount|Mobile: I don't think anything being talked about is actually being seriously talked about as a change that will happen anytime soon
12:52:03filwitVarriount|Mobile: lol, no, but that's alot for that :P
12:52:15filwitdom96: btw, did you see the PM i sent you earlier?
12:53:10dom96filwit: nope?
12:54:07filwitdom96: well just /join me an i'll ask again
12:54:26dom96What? That's not quite how IRC works lol
12:54:33dom96Just /msg me
12:54:40filwitoh, that's probably why it didn't work...
12:54:42filwit:P
12:55:32filwitg'damn.. can you just open a chat.. im a newb at IRC and this webIRC isn't helping..
12:56:27filwiti just wanted to ask you about the super secrete google-analytic anyways..
12:58:25filwitdom96: i tried to /msg you three times but it didn't work..
12:59:06EXetoC "/query dom96" or "/msg dom96 ohai"
12:59:20dom96filwit: I PM'ed you
12:59:30filwitk
13:25:08filwitg2g, bbl
13:25:14*filwit quit (Quit: Page closed)
13:49:22*nequitans_ joined #nimrod
13:57:38nequitans_Hello!
13:57:45dom96hey
13:58:30nequitans_Thanks for your guys' assistance yesterday -- Araq's suggestion about by slowdown being related to random() was right
14:01:11nequitans_Once I fixed that issue (quickly wrote my own generator in nimrod), I decided that I wanted to do some metaprogramming to make doing this again simpler
14:01:17Varriount|MobileHah, PHPFail -> http://codegolf.stackexchange.com/questions/21114/weirdest-way-to-produce-a-stack-overflow/21160#21160
14:01:19nequitans_ala: https://gist.github.com/geetduggal/9290100
14:02:29nequitans_However, I get this error at compile time: Error: internal error: param not set: :env
14:03:34nequitans_ideally, it would be generecized too
14:03:38Varriount|Mobilenequitans: Sounds like something wrong with the compiler
14:04:04Varriount|MobileThe env parameter is the hidden param passed to iterators
14:04:30*darkf quit (Quit: Leaving)
14:05:18nequitans_VarriountIMobile, I see -- does the template itself look legit ('cause it's probably likely that I'm doing something wrong there :))
14:06:22Varriount|Mobilenequitans: What line/col is the error reporting?
14:07:19nequitans_line 6 right after the proc
14:07:38Varriount|MobileOh! Its the closure proc too, I think
14:08:06Varriount|Mobileenv parameters are also passed with them, to capture outer variables
14:09:01Araqnequitans_: I think this bug has already beeen reported
14:11:12nequitans_Araq, noted. Is there a hack to get around it in the interim?
14:12:10Araqtry without the 'block' which is kind of deprecated anyway
14:14:10Varriount|MobileHow is 'block' depracated?
14:14:21nequitans_Araq, it worked!
14:14:57*brihat left #nimrod (#nimrod)
14:15:18AraqVarriount|Mobile: 'block' in templates is a hacky way to introduce a fresh scope. With hygienic templates that is not necessary anymore.
14:17:11Varriount|Mobilenequitans: What are you working on? Some sort of simple threading thing?
14:20:23nequitans_VarriountIMobile, well after I became interested in nimrod and super excited after seeing its metaprogramming capabilities, I wanted to use it for my next project (I'm towards the end of my phd). One aspect requires creating a lot of random matrices (up to tens of thousands of rows and columns) and then doing an optimal selection amongst them. Threads makes it faster :)
14:21:20Varriount|MobileOoh, nifty
14:23:28nequitans_I really like how it is so easy to write things like 'withFile', 'debug', 'parallelFor' in a syntax similar to nimrod itself without modifying the language (e.g. i assume you have to do this in python, for instance). i haven't looked into rust and julia's metaprogramming capabilities, but i wonder if this is an advantage of nimrod?
14:24:56profmakxis there a way to get hold of .h #defined constants in nimrod code?
14:29:04Varriount|Mobileprofmakx: Use c2nim to extract them from the header, or use some varient of the cimport pragma
14:29:33profmakx{.importc, noDecl.}: cint
14:29:35profmakxlike that?
14:29:55dom96also {.header: ...}
14:30:00profmakx AF_INET6 = 23 ## for network protocol IPv6. this will almost certainly not work on anything but the system that it was taken from (I'll assume linux)
14:44:17Araqprofmakx: you can use var AF_INET6 {.importc, header: "<foo.h>".}: cint to get "portable constants"
14:44:33Araqbut this has its disadvantages of course
14:44:45profmakxdoes that work in an enum?
14:44:51profmakxmaybe i should just try
14:46:22Araqno
14:47:00nequitans_Varriount|Mobile, only one part of the project is in impure nimrod now (calls previously written C++ code via a compiled library) ended up writing some basic graph algs on my own). Would be cool to make it all pure Nimrod just to show how easy it is to do without sacrificing speed
14:47:51Varriount|Mobilenequitans: Even if part of it is in nimrod, its still neat!
14:50:01Varriount|MobileHm. What part of nimrod uses "::"?
14:53:22*dom96 wonders if GTK has a resize end signal
15:05:11AraqVarriount|Mobile: nothing but it's a valid operator symbol
15:23:22EXetoCAraq: so you think that the rule that states that you shouldn't nest more than about 3-4 levels doesn't really help when it comes to readability?
15:24:25Araqthe rule *at least* needs 1 exception
15:26:49EXetoCyou even said that you liked deep nestings, when we asked you about the two-space indent convention, so that's why I'm asking
15:34:46Araqiterating over an N dimensional space needs N loops
15:35:10Araqit's foolish to split that up into multiple procs to avoid the deep nesting
15:42:41*BitPuffin joined #nimrod
15:43:04profmakxhaving a nice iterator there would sometimes help more fwiw
15:46:54*nequitans_ quit (Remote host closed the connection)
15:49:01EXetoCsurely the complexity varies from case to case
15:50:42*BitPuffin quit (Quit: WeeChat 0.4.3)
15:51:14renesac_ @[1,2] + @[2,3] indeed looks like @[3,5] for me
15:51:51EXetoCwhat else if it does indeed work? & is for concatenation
15:52:08renesac_Araq, what about the possibility of specifying the operator precedence via a pragma or something?
15:53:40Araqrenesac_: we have "strong spaces" planned to affect operator precedence which is IMO a superior solution to this problem
15:53:55Araqprofmakx: yes but then you have that nesting in the iterator
15:54:32renesac_well, as I said, 'shl' and friends don't mix well with 'strong spaces'
15:56:02renesac_and that 'first character' rule probably leads to ankward operators... and I don't really think it simplifies anything for the user
15:56:27renesac_as there are many operators to remember...
15:56:39renesac_*characters
15:59:25Araqwell fair enough with strong spaces we can have <<
15:59:34EXetoCAraq: and that's essentially why we got this two-space convention?
16:00:02AraqEXetoC: no, I'm used to 2 spaces, that's why. No deep thoughts behind it really.
16:00:12Araqfeel free to use 4 spaces
16:00:23Araqthe compiler doesn't mind, nor do I
16:02:56Araqrenesac_: it's not only about "simplifying" things for users
16:03:19Araqwhich operator overloading and the macro system symbol lookup can happen lately
16:03:31Araqand so precedence must not be bounds to symbols
16:04:53renesac_macros can't lookup the precedence information someway?
16:11:21Araqwell surely it could be done
16:11:30Araqbut what's the point really?
16:11:59Araqx<<1 & 5 should be parsed as I wrote it, not as you defined &'s precedence
16:13:36renesac_well, I'm not sure I'm really into this strong spaces bandwagon, as I like to have spaces between operators and values
16:14:24renesac_and if you don't use this feature, the << operator will have lousy precedence...
16:16:16renesac_and having both 'shl' and '<<' is bad
16:17:39renesac_though we likely would still need some non-special signal operators...
16:19:58renesac_and or not xor shl shr div mod in notin is isnot of -> & (confusion with concatenation), | , ! , ^ (no conflict?), <<, >>, // (python-like), % (confusion with format), the others may be left as is....
16:20:32Araqcan you wait until we implemented it and you tried it in practice before you complain?
16:20:42renesac_well, and I haven't looked up the precedences
16:21:05renesac_ok...
16:21:29renesac_but then we would have two versions for those operators?
16:21:58AraqI don't think so, but you can always alias yourself
16:23:55Araqhowever =<< and =>> are cool and 'shr' doesn't easily enable it
16:24:18Araqso perhaps we should copy C more here
16:25:00Araqbut then 'shr' and 'shl' should be deprecated and ultimately removed though most people are not opposed to having aliases to make programmers feel right at home
16:25:20Araqso I dunno and it's not important anyway
16:25:39Araqsee you later
16:38:40*nequitans_ joined #nimrod
17:03:34*Matthias247 joined #nimrod
17:21:08*Mat3 joined #nimrod
17:21:12Mat3hi all
17:22:51*brihat joined #nimrod
17:22:51*brihat1 joined #nimrod
17:23:15*brihat left #nimrod (#nimrod)
17:23:19*brihat1 quit (Client Quit)
17:23:47*brihat joined #nimrod
17:39:08nequitans_i have a simple mersenne twister random number generator in pure nimrod.. dunno if it's in a package already (first glance says, no, but i'm not sure)
17:41:58dom96Not that I know of.
17:44:28renesac_I was going to implement some xorshift random number generators
17:45:43renesac_well, I implemented a simple one, but was going to make it more generic and this xorshift1024* looked interesting also:
17:45:49nequitans_dom96, noted. renesac_ -- i implemented xorshift last night to test out whether random nums were slowing me down. decided to use mersenne today since it is basically a standard, proven generator. i could provide both since already implemented. do you know how to seed a xorshift generator?
17:45:59renesac_http://xorshift.di.unimi.it/
17:46:28nequitans_renesac_, interesting
17:47:37renesac_he don't show the seeding procedure, but I don't think you need the warm up that mersenne needs
17:49:36nequitans_ic
17:50:02renesac_I'm far from expert in those issues though
17:50:20renesac_and none of those are cryptographic secure anyway
17:50:36renesac_so speed seems the most important thing
17:51:31nequitans_yea, i think the idea behind them is application to simulations and statistics more than crypto stuff
17:52:34renesac_well, it is true that peer review can get picky about the quality of the RNG you used for simulations...
17:57:59renesac_anyway, adding that multiplication in the end of xorshift is like making a lot more shifts, and is cheap, at least on current x86
17:58:37renesac_that is why murmurhash is also so good in that table
17:58:37nequitans_yea, it's pretty interesting that the xorshift under certain measures of quality performs so well
17:59:08renesac_one thing that bothers me though is the lack of 0 as possible output
17:59:09renesac_:P
17:59:43*nequitans_ quit (Read error: Connection reset by peer)
18:00:59*nequitans_ joined #nimrod
18:01:06nequitans_ack, computer froze!
18:01:41renesac_I think that a murmurhash-like algorithm with a bigger state would be a killer rng... but I don't have the number theory knowledge to build it
18:01:46renesac_[14:59:08] <renesac_> one thing that bothers me though is the lack of 0 as possible output
18:02:26nequitans_interesting
18:05:22renesac_does an addition/subtraction step fix that lack of 0 thing?
18:05:30renesac_w/o introducing the lack of another number?
18:05:42renesac_well, away
18:05:49*renesac_ is now known as renesac|away
18:07:53nequitans_yea, that's an interesting question
19:11:34*jbe joined #nimrod
19:13:31jbedoes anyone know if there is a way to yield process control in nimrod without specifying a wait time - similar to sleep(0) on windows or sched_yield on unix?
19:17:10jbenever mind, i can just use the posix library
19:18:12dom96yeah, I think that may be the only way
19:23:34Mat3use the Posix wrapper
19:30:45jbeyep that works fine, thanks
19:33:18*noam_ quit (Ping timeout: 240 seconds)
19:34:37*noam joined #nimrod
19:39:52Mat3hello Araq: Have you found a strategy for limiting the type zoo yet ?
19:40:59AraqMat3: well I have 2 "narrowing" instructions but I have no idea whether that's correct for every edge case
19:41:15Araqpeople will report bugs though, so I'm not too worried
19:45:49*noam quit (Ping timeout: 264 seconds)
19:45:51Mat3I think that says, you extend all types from a basic one ?
19:46:30Araqyes, well now that you say it, it can't work for uint64 :-)
19:47:21renesac|away:/
19:47:24Araqit uses int64 operations for everything and then narrowSigned and narrowUnsigned ops bitmask the result
19:47:36*renesac|away is now known as renesac
19:47:57*noam joined #nimrod
19:48:37renesacdon't this introduce some overhead?
19:48:51renesacor from the C code the compiler optimizes it out?
19:52:06Araqrenesac: I'm talking about the VM used for compile time ops
19:52:16Araqnot about the other code generators
19:52:36renesacoh, ok
19:52:49Araqand currently we treat uint64 as a second class citizen already so it's fine for now
19:52:55renesacthen it makes sense
19:53:30renesacand nimrod don't exposes a uint128 right? (I remember seeing something like that somewhere in the compiler though)
19:53:50renesacfor SIMD
19:54:24*noam quit (Ping timeout: 252 seconds)
19:54:32Araqwell actually we need to rework all this for int128
19:54:47Araqwe'll have a more generic intXX type internally then
19:54:55Mat3I am a bit confused; Integer and unsigned integers can be both represented as ... integers (2 complement make it possible)
19:55:06Mat3so what's the problem ?
19:55:13AraqMat3: that is correct but div for instance differs
19:55:27Araqso you need sdiv and udiv
19:55:36profmakxMat3 you are confused in the wrong way
19:55:48profmakxyou want to think about how you n bits are interpreted
19:56:09Araqfor addition/substraction it doesn't matter, for multiplication it's dfiferent again iirc
19:56:38Araqand it's all different when you consider overflows
19:56:39profmakxprimitive types are a pita
19:58:02renesacwell, in my code I aways end up with uints and bitwise operations, so good nimrod support for them is important for me...
19:58:15Araqprofmakx: that's why I keep saying I'm glad unsigned floating point numbers don't exist
19:58:33Mat3not really, All needed ist masking of a single bit for integer divisions. There are plenty processors avariable which only support unsigned division (if at all)
19:58:52Mat3^is
19:59:59AraqMat3: how does that work in detail?
20:03:16Araqrenesac: I know, don't worry
20:03:21Mat3simply mask out the sign bit and adjust negative numbers
20:04:22Mat3example:
20:05:19Mat3MOV RBX; RAX ; RAX : RBX
20:05:34Mat3TEST RBX, RBX
20:05:43*Demos joined #nimrod
20:06:13Mat3sorry
20:06:24Mat3MOV RDX, RAX
20:06:35Mat3TEXT RAX, RAX
20:06:39Mat3^test
20:09:05Mat3then, xor rdx, rax set the high bit of rdx if both have a different sign
20:10:28Mat3because rdx can be used as mask for 'NOT' it is now possible to:
20:10:35Mat3MUL RDX
20:11:11Mat3regardless of the sign of both values, because
20:11:19Mat3NOT EAX
20:11:23Mat3NOT EDX
20:11:28Mat3ADD EAX, EDX
20:12:20reloc0i'm currently trying to understand nimrod better. and writing some code with it, trying to learn it.
20:12:28Mat3(please replace RDX with RBX)
20:12:34Mat3so:
20:12:46reloc0every now and then i have some problems with the documentation.
20:13:23reloc0can i help to improve documentation or give example programs?
20:13:33reloc0and if so - what's the best way?
20:15:07Mat3mov rbx, rax; test rax, rax; xor rbx, rdx; test rdx, rdx; mul rdx; test rbx, rbx; not rax; not rdx; add rax, 1
20:15:39Mat3that code should divide signed and unsigned integers
20:16:30Araqreloc0: the docs are in RST in $nimrod/doc, just edit the .txt files and make a pull request
20:16:44Araqnimrod rst2html file.txt
20:16:49Araqproduces the html version
20:18:55reloc0Araq: cool. thanks
20:18:56Mat3Araq: You will find such tricks in every common Z80 assembly book for example
20:19:16AraqMat3: yeah but I'm lazy so I am asking you ;-)
20:19:36Araqalso a sequence of instructions is bad for a VM
20:19:52Araqwhere CISC is the name of the game
20:22:23Mat3well, just implement an unified division instruction (your Out-Of-Order cpu will have no problem with it)
20:24:07Mat3I just found out the Small C compiler compiles this way, check it out
20:24:18Mat3ciao
20:24:30*Mat3 quit (Quit: Verlassend)
20:35:17Varriountreloc0: The library documentation is mostly in the docstrings of types, procedures, and other code in the library source files
20:40:22VarriountOrionPK: ping
20:47:13*Demos quit (Ping timeout: 240 seconds)
20:55:01*q66 joined #nimrod
20:57:01VarriountAraq: Do iterators have result variables?
20:57:21Araqno
21:00:35renesacVarriount, why the bug I filled about the implicit initialization of the result variable, even when it isn't assigned to, was tagged as 'feature'?
21:01:29renesacAraq, right, good to know
21:01:57renesachttps://github.com/Araq/Nimrod/issues/868 <-- this one
21:02:07Varriountrenesac: I don't know. I don't control the issue tracker.
21:02:36renesacah, as you were the only one to answer I though it was you
21:03:20renesacmaybe I should rename it, reflecting the edit
21:04:05Varriountrenesac: I stated that it was arguable whether this was a bug or a feature.
21:04:59renesachow "proc foo():int = var bar = 42" returning 0 is a feature?
21:05:36renesac(in my edit I discovered the 'result' identifier wasn't the problem
21:05:44Araqit *is* a feature
21:05:56VarriountThe result value is always initialized to 0
21:06:11VarriountOr rather, the memory that it uses is zeroed
21:06:16renesacyes, but this hides programmer errors
21:06:28renesacif you return w/o even touch the return value
21:06:46renesacI'm not against it being initialized to 0
21:07:28renesacbut the compiler should complain when a proc is supposed to return something, and you don't use either 'result' or 'return' to set this return value
21:07:28Araqwell we can easily produce a warning
21:07:33fowl<renesac> if you return w/o even touch the return value -- what if this what you meant to do, knowing the semantics, then its not an error
21:07:57renesac'proc foo():int' will complain of missing implementation
21:08:16Araqwe recently got the necessary control flow analysis
21:08:39renesacright
21:09:44*Demos joined #nimrod
21:09:45renesacwell, if it has at least one return somewhere, returning 0 by default w/o touching may be desired
21:10:09Araqindeed the compiler uses this idiom heavily
21:10:32renesacright
21:11:00Demosyou can say proc foo(): int = 4 though right?
21:11:02renesacI wonder if it is easy do differentiate the two cases
21:11:06Demosand it will return 4
21:11:09renesacDemos, yes
21:11:16AraqIME it doesnt hide bugs, it hides 'result = 0 | false'
21:11:36Demosit hides boneheaded errors
21:11:54Demosimo it should be a warning
21:11:57AraqI said IME
21:11:57renesacyeah
21:12:00Demoslike it is in C
21:12:11Araqso ymmv
21:12:34renesacand allowing or not to redeclare a 'var result' is another issue
21:13:00renesacthat shadows the original one, but isn't used by default for returning
21:13:59renesacwell, any experienced nimrod coder wouldn't make this error anyway... just me when messing around the first time...
21:14:24renesacthat isn't high priority though..
21:14:34VarriountAraq: How exactly do I produce a new test result for the babel package build test?
21:15:02VarriountUnlike the other tests, this one doesn't use test files with specs
21:16:28renesacAraq, how fast would be to querry the memory allocator for the capacity of an array, for example?
21:16:52renesacI find it kinda a waste to duplicate this information...
21:18:39renesaconly for the few uses where you allocate a seq but don't want it's length to follow the capacity...
21:20:20renesacyou would need to query the memory alocator, maybe in one step via a realloc with special flags, once every array duplication (assuming normal dinamic array growth here)
21:21:02Varriountrenesac: sizeof()?
21:21:39renesacI think if you ask sizeof() a pointer it will return 4 or 8...
21:23:07renesacand for a struct, it will return the baseline size, not the size of the slot the memory allocator decided to insert it
21:23:46AraqVarriount the tester has lots of special stuff in categories.nim
21:24:35Araqrenesac: it would be very fast
21:25:10renesacso, isn't this idea interesting?
21:26:38Varriountrenesac: But what could it be used for?
21:26:44dom96I spent an entire day trying to get scrolling past bottom working in Aporia.
21:26:45renesacyou ask for a newSeq(cap=10000), and then internally it calls a 'realloc(shrink=false)' every doubling
21:26:57renesac(not using the current API)
21:27:17renesacVarriount, arrays and seqs with 4/8 bytes less overhead
21:27:25*dom96 </3 GTK
21:27:41renesacthat could translate to even bigger savings
21:28:14renesacif your seq type is a tuple 'len, pointer'
21:28:33Araqrenesac: it's in my todo for years now
21:28:46renesacif you add another field, it would not be a power of two anymore, and would likely be allocated in a bigger slot
21:28:53Araqso sorry it's not interesting ;-)
21:29:00renesachehe
21:29:04renesac*heh
21:30:13renesacbtw, is it safe to store information in lower bits of pointers?
21:30:17renesacor it confuses the GC?
21:33:45dom96Who wants $10K? If somebody uses Nimrod for this it would give us some really good publicity: http://www.raspberrypi.org/archives/6299
21:35:18renesac* Okay, so sue us**
21:35:20renesac** Please don’t sue us.
21:35:24renesaclol
21:35:56Araqrenesac: sorry not safe and would have desastrous results
21:36:19renesac:(
21:36:42renesaccan't the GC mask those bits, or it already use them?
21:36:51renesac*uses
21:38:31jbehow should i go about iterating through some bytes that i have a pointer to? (sdl surface pixels actually)
21:40:11dom96Araq: Wow, that reddit post of yours is at ~50 upvotes. There are people out there that respect you :)
21:42:32dom96jbe: Something like this perhaps? for x in 0 .. <width: for y in 0 .. <height: pixels[x + y]
21:44:11Varriountdom96: Link to the post?
21:44:35dom96http://www.reddit.com/r/programming/comments/1z6j37/on_garbage_collection_in_games/cfrb3jy
21:45:00dom96Might as well look at all the comments though to get the context: http://www.reddit.com/r/programming/comments/1z6j37/on_garbage_collection_in_games/
21:45:31Demosidetools seems to have trouble with spaces in paths
21:45:40Araqrenesac: it is very easy to unmask these bits but the consequences are awful for performance
21:46:14*q66 quit (Ping timeout: 252 seconds)
21:46:18VarriountDemos: escapeShell?
21:46:28VarriountOr just put quotes around the path
21:46:35fowljbe, check out the source for the graphics library
21:46:39renesacreally? I would think that masking was a cheap operation
21:46:41renesac:P
21:46:43DemosI tried both
21:46:49jbedom96: like, cast the pointer to a ptr byte, and then use thepointer[i]?
21:47:19dom96jbe: If you're using sdl then you might as well use the graphics module.
21:47:35Demosmaybe not the spaces
21:47:53dom96jbe: Cast it to an array[0..1000_000-1, int32]
21:48:04renesactoo bad then... another place that might hide a bit would be the sign bit of a seq lenght, but it isn't nearly as widely useful...
21:48:52Araqthe masking itself is not measurable of course :P
21:48:53renesacbut at least I could def a bigint as a 'distinct seq'
21:49:35renesacor 'seqWithHiddenBit'
21:50:05Araqthere are other consequences that make it slow
21:50:09DemosOK idetools actually has trouble with the dirty file being in my temp folder
21:50:23renesacseqs are magic, and you pointed me where they were defined sometime ago, but I lost it
21:50:46renesacAraq, like what, now I'm curious (not criticizing)
21:50:47jbedom96: thanks. well, it's just to load files into a texture packager. i'll see how it works
21:50:53renesac?
21:54:00fowldom96, can i put sdl2 on nimrod-code
21:55:01dom96fowl: sure. The wrapper is complete right?
21:55:55Varriountdom96: The comments in that thread... they bring tears of pride to my eyes. Go filwit! Go Araq!
21:56:37dom96Varriount: hehe
21:56:43fowldom96, net and audio needs work
21:57:13*nequitans_ quit (Ping timeout: 240 seconds)
21:57:20dom96fowl: it should be fine.
21:57:35*brson joined #nimrod
21:57:37fowlok
21:57:49jbedom96: thanks. well, it's just to load files into a texture packager. i'll see how it works
21:57:56jbeoops
22:06:19fowldom96, do we have something that launches a platform-independant open file dialog
22:06:36fowlgtk on linux, win gui on windows
22:06:38dom96fowl: dialogs module
22:09:23Demosoh it fails if run in COMMAND.COM
22:09:50VarriountCommand.com doesn't exist in windows anymore.
22:09:56Demoswhatever
22:10:02Demosthe old style command shell
22:10:07Varriount\nitpick
22:10:22Demosfails in powershell as well, does it assume some sh stuff?
22:12:02fowldom96, how about naming, is import sdl2/ttf ok? :D
22:13:02dom96fowl: yeah
22:15:59VarriountAraq: Almost have testament/babel integration done. I'm testing the output right now.
22:17:13*OrionPK quit (Ping timeout: 240 seconds)
22:21:02Araqexcellent
22:21:14skrylarmeepity meep
22:22:19VarriountHi skrylar!
22:22:32VarriountDid you see Araq & filwit's post on reddit?
22:35:01*Endy quit (Ping timeout: 264 seconds)
22:37:29DemosWoooWWWWWWW VS completion
22:39:39profmakxwhen people say "syntax is odd" they mean "it doesn't look like C" right?
22:39:42profmakxor
22:39:56profmakx"it looks like C, but works differently, I want it to work like C"
22:42:07Varriountprofmakx: That's my guess.
22:42:35Demosyeah, also nimrod ignores pseudo software engeneering
22:42:54VarriountDemos: Huh? "Pseudo software engineering"?
22:43:42VarriountAraq: What should the tester do if it can't find babel?
22:43:44Demosstuff like strict scope control (beyound sane modules) and extremely explicit everything.
22:44:01Demosand sticking everything to objects
22:44:15VarriountDemos: You mean, Java?
22:44:42*Varriount is now known as Java
22:44:42Demosyeah, and c++ a little
22:44:50JavaMOOOAR OBJECTSSS
22:45:06Demossome of these things seem to make sense when you are coming from C/C++ and have very little control over scope
22:45:11*Java noms all the memory
22:45:11Demosimo
22:45:17*Java is now known as Varriount
22:47:52dom96oh look. A new programming language: http://wasyl.eu/programming/2014/03/01/introducing-september.html
22:49:32profmakxreinventing lisp macros now with curly braces>
22:49:53profmakxi really hate syntax with {} for blocks and ; as terminator
22:49:55VarriountTo be fair, he does say that it's a hobby
22:50:07Varriountprofmakx: So do I! :D
22:50:11profmakxof course
22:50:19profmakxeveryone should have implemented at least one language
22:50:20dom96It seems that 99% here do :P
22:50:33*profmakx calls bias
22:51:25*psquid joined #nimrod
22:51:45VarriountHi psquid
22:52:36dom96It seems like a perfect place to mention Nimrod
22:52:55Varriountdom96: That could be seen as inflammatory
22:53:40dom96True.
22:55:07renesaconly mention nimrod if you have something to add
22:55:18renesacand well, rust was already mentioned in the reddit thread
22:55:27dom96of course it was...
22:55:33Varriount>:/
22:55:56VarriountThrow the infidels into the pits of DOOOOM!
22:56:14*Varriount gets the torches and pitchforks
22:56:25profmakxi should put out a disclaimer of the form
22:56:28renesacyou can answer that rust poster, saying that nimrod metaprogramming is much more powerful, and also works on the AST
22:56:30profmakx"spare me the rust talk"
22:56:51dom96I could mention Araq's strong spaces idea here: http://www.reddit.com/r/programming/comments/1z9ppe/introducing_september_working_on_an/cfruobb
22:56:56renesacbut compare with september too, or it will be purely a flame
22:57:37dom96or I could show an example of 'until' here: http://www.reddit.com/r/programming/comments/1z9ppe/introducing_september_working_on_an/cfrusbg
22:59:37fowldom96, i guess ihave to set up a window though
22:59:59dom96fowl: hrm?
23:00:04EXetoCprofmakx: that syntax should be illegal
23:00:20fowldom96, sry, for dialogs.nim, btw this module should be moved to babel
23:00:30fowlit uses glib/gtk2
23:00:53dom96fowl: hrm, yeah.
23:01:18VarriountMy very fuzzy havanese is sitting in front of a space heater. Why?
23:01:23dom96I guess it may as well be a part of the gtk package?
23:03:15fowli would put it in a separate package, possibly with browsers.nim
23:03:36dom96I think the tester uses browsers.nim
23:04:56*Varriount|Mobile quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com ))
23:26:29*jbe quit (Quit: Leaving)
23:36:06fowlyea it does
23:37:38*runvnc joined #nimrod
23:37:42runvnchello
23:37:52fowlhey
23:37:52runvncis there an easy way to convert from a tuple to json
23:38:20Araqmarshal.nim uses a json representation
23:38:36runvncoh ok thanks a lot even better
23:50:55*ddl_smurf quit (Quit: ddl_smurf)
23:52:16*ddl_smurf joined #nimrod
23:58:02NimBotnimrod-code/Aporia master b150d1c Dominik Picheta [+0 ±3 -0]: Added first implementation of scrolling past bottom.
23:58:28NimBotnimrod-code/packages master 71ec516 Billingsly Wetherfordshire [+0 ±1 -0]: added sdl2