ec changed the topic of #elliottcable to: #
<whitequark> what?
<alexgordon> sorry I must have misinterpreted you
* whitequark is completely puzzled
<whitequark> optional arguments
<whitequark> had to remember how ML does value restriction and shit and why
<whitequark> but now I have a proper, C-nullable-pointer-compatible option type and optional args and I'm happy
<ELLIOTTCABLE> why are there so many conversations about programming languages in here recently
<ELLIOTTCABLE> it makes me sad there is no porn
<ELLIOTTCABLE> -34 computer
<purr> ELLIOTTCABLE: Here. <http://bit.ly/14uGuyG> [NSFW]
<purr> ELLIOTTCABLE: ... if you had any sense, you wouldn't have asked.
<whitequark> ELLIOTTCABLE: xhamster.com/movies/684936/videos_with_new_hot_chicks.html
<whitequark> this one is good
<ELLIOTTCABLE> … can't click that
* alexgordon was about to google up "kitten porn" for ELLIOTTCABLE, but thought better of it
<whitequark> yes, it's bookmarked. no, you don't know why, even if you think you do. no, I won't explain.
* whitequark grins
* alexgordon finds some hot russian chicks for whitequark
<ELLIOTTCABLE> GUYS
<alexgordon> WHAT
<ELLIOTTCABLE> HOW DO I FIND A PLACE TO STAY FOR ONLY A MONTH
<whitequark> TRY CARDBOARD BOX
<whitequark> PERHAPS YOU WILL NEED SEVERAL
<alexgordon> IT'S CALLED A HOTEL, RICHBOY
<joelteon> hotel bitch
<joelteon> you have spare money
<alexgordon> ELLIOTTCABLE: like in a specific place?
<whitequark> ELLIOTTCABLE: also go back soon! let's finally talk about an interesting, working language
<alexgordon> furrow is interesting!
<alexgordon> -_-
<ELLIOTTCABLE> what
<ELLIOTTCABLE> hotel for a *month*!?
<ELLIOTTCABLE> at my living standards, that's almost twice what my fucking apartment costs
<ELLIOTTCABLE> and that's A Lot Of Money™.
<ELLIOTTCABLE> “go back soon?”
<alexgordon> airbnb?
<ELLIOTTCABLE> and *what* interesting, working language?
<whitequark> alexgordon: you said there's nothing new in it
<whitequark> ELLIOTTCABLE: paws
<ELLIOTTCABLE> airbnb isn't for long enough, though, 8and* it costs money
<ELLIOTTCABLE> I might try, uhhhh, was sit, couchsurfing
<alexgordon> holy shit this IS porn whitequark
<whitequark> alexgordon: told ya
<ELLIOTTCABLE> alexgordon: what is ittttt I want to click it damnit
<ELLIOTTCABLE> but girlfriend and best-friend here
<joelteon> ELLIOTTCABLE: you should find an apartment to stay in
<joelteon> like the one you're staying in
<joelteon> right now
<whitequark> ELLIOTTCABLE: vanilla porn
<whitequark> I'm not the type to trick you into viewing shock videos, dammit
<joelteon> oh THAT's what vanilla is
<joelteon> it's a plant
<alexgordon> ELLIOTTCABLE: the guy with the cock is kissing the girl and attempting to suckle on her breasts like an infant
<joelteon> gay
<whitequark> alexgordon: you are officially appointed as my personal porn narrator
<joelteon> "videos with new hot chicks" that's all i need
<alexgordon> ELLIOTTCABLE: he has now removed her overgarment to reveal an absence of any brassiere or other undergarments
<alexgordon> ELLIOTTCABLE: the girl is attempting to grab HIS breasts only to find there are none there
<joelteon> oh no
<alexgordon> she can be forgiven for this because she is wearing sunglasses
<alexgordon> though WHY she is wearing sunglasses indoors is a mystery
<whitequark> there is an author (?) comment under the video
<joelteon> It would be hard to concentrate in porn
<alexgordon> ELLIOTTCABLE: they are now preparing for intercourse
<alexgordon> it is revealed that the girl is not wearing any undergarments on the lower half of her body
<alexgordon> ELLIOTTCABLE: the guy is now suckling her third breast
<joelteon> gross
<alexgordon> joelteon: if you think THIS is gross, stay away from the internet
<ELLIOTTCABLE> ... third breast. wat
<ELLIOTTCABLE> also, my girlfriend is reading everything you hi light me with, out loud, to all of us.
<alexgordon> shit.
<whitequark> ELLIOTTCABLE: (third breast) the weirdest euphemism I heard in a while.
<joelteon> ELLIOTTCABLE likes to suck big oily black cocks
* whitequark sighs
<alexgordon> ELLIOTTCABLE: the guy considers inserting digits into her anatomy, but ultimately thinks better of it
<joelteon> i want to go to starbucks, but i need something to do when i'm there
<joelteon> any ideas
<alexgordon> ELLIOTTCABLE: it is revealed that the guy is in possession of an abnormally perpendicular love truncheon
<alexgordon> well that was over quickly.
<alexgordon> whitequark: FIND US MORE PORN
<whitequark> alexgordon: maybe later
<alexgordon> you would deny us porn at a time of need?
<whitequark> I don't exactly have a stash of good porn; we're at equal terms here.
<alexgordon> hm, we're ok because ELLIOTTCABLE has a whole drobo full of porn
<ELLIOTTCABLE> wat
<alexgordon> lexing furrow's comments is reaaaaly difficult
<alexgordon> I want to have
<alexgordon> actually no I'm just a moron
<joelteon> alexgordon what are the comments
<alexgordon> joelteon: -- line comment
<alexgordon> joelteon: /// block comment \\\
<joelteon> o_o
<alexgordon> :D
<alexgordon> well the line comment is normal
<joelteon> line comments okay, what's up with the block comments
<alexgordon> ELLIOTTCABLE liked them
<joelteon> oh right
<alexgordon> hm, maybe that isn't such a great design criteria
<ELLIOTTCABLE> I did?
<alexgordon> yeah
<alexgordon> you did
<ELLIOTTCABLE> news to me.
<ELLIOTTCABLE> but hey, I agree with ELLIOTTCABLE
<alexgordon> hahaha
<alexgordon> joelteon: it just looks nice as a section heading
<alexgordon> // Parser \\\
<alexgordon> erm
<alexgordon> // Parser \\\
<alexgordon> dammit
<alexgordon> fucking
<alexgordon> irc
* alexgordon cries
<alexgordon> /// Parser \\\
<alexgordon> YES
<ELLIOTTCABLE> nah, seems like a good idea to me
<alexgordon> that
<ELLIOTTCABLE> my problem with it:
<ELLIOTTCABLE> I prefer double delimiters, so they work well with thresp indentation. ;)
<ELLIOTTCABLE> / Parser \\
<alexgordon> HA
<ELLIOTTCABLE> // Parser \\
<ELLIOTTCABLE> has the benefit of looking standard ;)
<ELLIOTTCABLE> could do /\ as the one-line version, perhaps
<ELLIOTTCABLE> lolno
<purr> lolno
<alexgordon> / Parser \\
<alexgordon> gah
<alexgordon> yeah ok
<alexgordon> I just worry about people not getting it
<alexgordon> because // is line comment in EVERY LANGUAGE EVER
<purr> <Nuck> American English is a better-maintained fork of the English language.
<joelteon> OH GOD NOOOOOOOOOOOOOOOOOOOOOOOOOO
<joelteon> MY HOME BED WAS MISSING OR OBSTRUCTED
<joelteon> FUCK
<joelteon> FUCK FUCK FUCK FUCK FUCK FUCK FUCK
<alexgordon> shit!
<joelteon> FUCK
<joelteon> welp
<joelteon> should've tested it before i set it down
<alexgordon> MURDER A SHEEP!
<joelteon> alexgordon: i like that as a heading, but -- Parser -- is pretty cool too
<alexgordon> that's true
<alexgordon> I like -- because you can do 1 + 1 --> 2 for tests
<joelteon> okay, i found my house again
<joelteon> i even stored some diamond and sticks
<joelteon> wow, thank god
<whitequark> alexgordon: // is in every language ever, except where # or (**) or ; or --
<whitequark> /**/ and (**) have the advantage that they nest properly
<alexgordon> nesting comments are evil
<alexgordon> EVIL
<whitequark> wat
<whitequark> did you never want to comment a function with comments?
<alexgordon> they make text editor authors' lives miserable :P
<alexgordon> I may be biased
<whitequark> idk, if you document your code properly this arises like all the time
<whitequark> alexgordon: authors of shitty editors must suffer
<whitequark> authors of good editors don't care
<alexgordon> lol clearly not
<purr> lol
<whitequark> it either parses CFGs or not ;)
<alexgordon> that would make it slow!
<whitequark> you don't need to construct entire parsetree. additionally, you can memoize the state of the parser (more importantly) lexer at block boundaries
<alexgordon> anyway I like nested comments as a programmer, but gah they're impossible to parse
<alexgordon> ^ still not fast enough
<whitequark> where blocks are rope leafs
<alexgordon> find be a parser that runs at 30-60fps :P
<whitequark> so
<alexgordon> *me
<whitequark> sublime solves that by lazily coloring the text
<whitequark> which is completely OK
<alexgordon> still not enough
<whitequark> it is
<alexgordon> ...
<alexgordon> build one if you don't believe me!
<whitequark> um
* whitequark silently points at sublime
<alexgordon> I spent years optimizing choc's syntax highlighter, there's just no way you can get a full blown parser in there
<alexgordon> it's slow enough as it is
<whitequark> actually it doesn't memoize, it has a regexp hack
<alexgordon> and that's with every optimization you could possibly think of
<whitequark> which is simple and evidently fast enough
<whitequark> you are probably right about full-blown parser
<whitequark> but: see above about the regexp hack
<joelteon> and creeper.
<joelteon> cmoooooooonnnnnn
<alexgordon> whitequark: which regexp hack?
<whitequark> alexgordon: it's 5AM, I'll explain tomorrow
<alexgordon> NOW
<alexgordon> :P
<whitequark> I've one thing left to say
<whitequark> since a fuckton of languages already has nesting comments
<whitequark> you do no harm by using it.
<alexgordon> one? D
<alexgordon> that's all I can think of
<whitequark> ocaml too
<whitequark> ruby too
<whitequark> except it's not comments but regexps and strings
<whitequark> (they're equivalent in expressiveness)
<alexgordon> oh man don't get me started on ruby and syntax highlighting
<alexgordon> no editor gets it right
<whitequark> DUDE I WROTE A RUBY PARSER I KNOW
<alexgordon> not even textmate
<alexgordon> oh right
<whitequark> because it's not possible
<alexgordon> yeah
<whitequark> even for a CFG parser
<whitequark> it's CSG
<whitequark> like, for real
<alexgordon> it's a mess
<whitequark> and it's an actual CFG, you cannot get around it like clang does
<whitequark> by building a parse tree and then doing semantic analysis
<whitequark> you *have* to look into context, otherwise you cannot even tokenize it.
<whitequark> it's... abysmal.
<whitequark> no editor gets it right, and no one, ever, will.
<whitequark> *actual CSG
fwg has quit [Ping timeout: 240 seconds]
<whitequark> ok it was an unexpected rant
<whitequark> night
<joelteon> GOD DAMN IT
<joelteon> I CAN'T FIND WHERE I PUT MY FUCKING BED
<joelteon> AND I KEEP GETTING KILLED BY CREEPERS
<joelteon> GOOD
<joelteon> FUCKING
<joelteon> RIDDANCE
<joelteon> that's enough minecraft for today
<joelteon> alexgordon: so i saw your lexer
<alexgordon> joelteon: mm?
<joelteon> and
<alexgordon> aaaaand
<joelteon> is that how you proposed i fix my parsing problem?
<alexgordon> well that's a lexer :P
<joelteon> yeah, and you said lex it first
<alexgordon> there's many ways to write a lexer!
<alexgordon> but yes this is my favourite way
<joelteon> hmm
<alexgordon> ragel is AWESOME
<joelteon> i just don't think it's actually possible to solve this problem in not quadratic time
<joelteon> but i really really want to solve it
<joelteon> maybe if i short circuited
<ELLIOTTCABLE> hi
<purr> ELLIOTTCABLE: hi!
<joelteon> okay, so you have a string that starts ith
<joelteon> &b:stuff&/b
<joelteon> once you encounter the second &
<joelteon> check the token 3 characters after it
<joelteon> is it :?
<alexgordon> joelteon: I'm so tired I can't even read properly
<joelteon> then check if it's the one you want
<joelteon> heh
<joelteon> okay, i'm gonna write a benchmark using my new stratagem
<joelteon> GHC IS slow
<joelteon> but I wouldn't trade it for anything
* alexgordon responds to security posts on reddit
<alexgordon> lol
<purr> lol
<alexgordon> what is it about programmers and crypto that is such a train wreck?
<joelteon> sooooo
<joelteon> attoparsec can only peek one character at a time
<joelteon> so there goes that idea
alexgordon has quit [Quit: Computer has gone to sleep.]
<joelteon> nah, this is too complicated
<joelteon> I'll have to write out a state machine or something
devyn has quit [Read error: Connection reset by peer]
devyn has joined #elliottcable
<purr> <alexgordon> Nuck: you of all people should know that I of all people know of all the people the problems c++ of all languages has, of all
eligrey has quit [Read error: Connection reset by peer]
<joelteon> i need something to do
cuttle has quit [Ping timeout: 248 seconds]
jdhartley has quit [Ping timeout: 248 seconds]
jdhartley has joined #elliottcable
<purr> <audy> and she thinks the Terminal is for talking about boobs and what-not
<joelteon> but it is
<joelteon> "she"
<joelteon> has a point
<joelteon> okay, here's how i do my hostname in my prompt
<joelteon> hostname | tr 'A-Z' 'a-z' | tr -d 'aeiou.' | sed 's/\(.\)\1/\1/g'
<joelteon> copyright 2013 joel taylor all rights reserved
<joelteon> anytime you use that specific sequence of commands will be a $30 royalty charge
cuttle has joined #elliottcable
<cuttle> ELLIOTTCABLE:
<ELLIOTTCABLE> What
<cuttle> ELLIOTTCABLE: actually gtg
<cuttle> <3
<cuttle> loveyou
<cuttle> 9:45 PM <•purr> <alexgordon> Nuck: you of all people should know that I of all people know of all the people the problems c++ of all languages has, of all
fwg has joined #elliottcable
sharkbot has quit [Remote host closed the connection]
sharkbot has joined #elliottcable
<purr> <alexgordon> Nuck: had all your favourite PHP features, magic quotes, mysql_real_escape_string, zionism
alexgordon has joined #elliottcable
fwg has quit [Ping timeout: 268 seconds]
cloudhead has joined #elliottcable
<alexgordon> FUUUUUUUU
<alexgordon> 89 parsing conflicts.
<alexgordon> bloody commas
<alexgordon> though I can see why it's confused
<alexgordon> this is a rabbit warren of a grammar
<alexgordon> problem seems to be
<alexgordon> functions allow exprs to be on the lhs
<alexgordon> e.g.
<alexgordon> f(2 + 2) = 4
<alexgordon> this conflicts with lambda declarations
<alexgordon> x, y: z
<alexgordon> because
<alexgordon> f(x, y: z) is ambiguous
<alexgordon> obviously I don't want every expression to be able to go in there
<alexgordon> I was more interested in like
<alexgordon> f(x < 0) = -1
<alexgordon> as a simple form of guards
<alexgordon> hm
fwg has joined #elliottcable
<alexgordon> gets harder
<alexgordon> <expr> ::= <expr> "is" <type>.
<alexgordon> <type> can be a tuple type: comma list of types
<whitequark> the last one is essentially operator priority
<alexgordon> whitequark: right
<alexgordon> lemon doesn't seem to like it though
<alexgordon> well
<alexgordon> it's more having two copies of the same operator in different places
<alexgordon> theoretically it's not ambiguous because types are a different world
<alexgordon> though I don't think lemon can parse that
<alexgordon> e.g.
<alexgordon> f(x is Int, Int)
<alexgordon> is not ambiguous because Int is not a valid expression
<alexgordon> but
<alexgordon> lemon can't parse it, I don't think
<alexgordon> so commas are in
<alexgordon> [1, 2, 3]
<alexgordon> {1, 2, 3}
<alexgordon> foo(1, 2, 3)
<alexgordon> foo(x, y, z) = ...
<alexgordon> x is Int, Int
<alexgordon> x, y: z
<alexgordon> some wacky ones like
<alexgordon> (x: y): z
<alexgordon> heh
<alexgordon> I think I should just whitelist some exprs that can be parameters
<alexgordon> and require parens around (x, y: z)
<alexgordon> that just leaves x is Int, Int
<alexgordon> x is (Int, Int) would be fine
<alexgordon> hm
<alexgordon> but that messes with function types
<alexgordon> FUUUUU
<alexgordon> why can't we teach computers common sense
<whitequark> is lemon LALR(1) or LR(1)?
<whitequark> LALR, right
<whitequark> LALR sometimes produces spurious conflicts which are not a problem for an LR parser
<whitequark> guess you've hit that case
<alexgordon> well some of it is spurious
<alexgordon> some are real
<whitequark> yeh
<alexgordon> figuring out how to teach it how to disambiguate them is the hard bit
<alexgordon> I'd like to say "require ( ) around tuples if in an IS expression"
<alexgordon> and "require ( ) around lambdas if they have multiple arguments, in some situations"
<alexgordon> and "some types of expressions can't be on the lhs"
<alexgordon> but it's hard to do that without blowing up the grammar
<whitequark> one sec
<alexgordon> hm
<alexgordon> yay only 42 conflicts now
<alexgordon> 41
<alexgordon> whitequark: well I can get it down to 5 conflicts, but I have to remove function calls ;)
<alexgordon> and subscripting
<whitequark> huh
<whitequark> btw did that SO answer help you
<alexgordon> whitequark: not sure, my grammar is different
<alexgordon> what I can't work out is why the square brackets are causing conflicts
<alexgordon> oh maybe it wants a precedence for them
<joelteon> yeah stupidhead
<joelteon> of course it does
<alexgordon> YEAH
<alexgordon> that works
<whitequark> joelteon: sometimes I wanna ask you rhetorically, "what are you, 19?!"
<whitequark> then I remember
<joelteon> you ageist scum
<alexgordon> NO KISS
<alexgordon> NOW
<alexgordon> DMAMIT
<alexgordon> jawdo
<alexgordon> ojfawfawfuoafwuo
alexgordon has left #elliottcable ["["Textual IRC Client: www.textualapp.com"]"]
<joelteon> oh
alexgordon has joined #elliottcable
<joelteon> i was gonna google something, what was it
<joelteon> oh yeah
<alexgordon> yay 2 conflicts
<alexgordon> 1 conflict!
<alexgordon> hm
<alexgordon> last one involves for ... in
<alexgordon> I have in exprs and for ... in ... loops
<alexgordon> it doesn't like having both
<purr> <elliottcable> anything ending in a period, basically
<alexgordon> ok fixed it
<alexgordon> so
<alexgordon> parser is done
<alexgordon> now for the parse tree
<joelteon> yay
<alexgordon> which I will attempt to generate from the grammar
<alexgordon> because I'm insane
<alexgordon> and lazy
<whitequark> actually that's how parse trees are generally done
<alexgordon> whitequark: is it?
<whitequark> well, they're artifacts of the grammar, essentially
<whitequark> (or other way around, depending on how you like to view it)
<alexgordon> yeah but which compilers do that?
<whitequark> probably some shit in haskell
<whitequark> also peg
<whitequark> so treetop and friends
<alexgordon> yeah I know some ruby parsers do that
<whitequark> they're dumb as hell though
<whitequark> leafs are characters
<whitequark> it's shit
<whitequark> incredibly slow and memory usage over the top
<alexgordon> heh well that's a given
<alexgordon> ruby, man!
<alexgordon> hardware is cheap
<whitequark> you can have fast parsers in ruby
<whitequark> my parser gem is fast.
<whitequark> I think after the last update, it's near 500kchars/s
<alexgordon> but why bother with that when you could write a slow parser then go to a github drinkup!
<whitequark> which I think is amazingly well for a pure-ruby parser which doesn't use ruby regexps for lexing
<whitequark> i.e. iterates the characters
<whitequark> and supports unicode entirely and shit
<alexgordon> cool
<whitequark> ruby_parser is about 150-180 kchars/s
<whitequark> zenspider's
<alexgordon> hm so first things first: parse trees for terminals
<whitequark> leafs*
<prophile> ErrorT String (State String)
<alexgordon> whitequark: leaves
<whitequark> right
<joelteon> you know what's weird is people that type wan't
<purr> <alexgordon> elliottcable: 1. seduce isaacs, 2. change the name
<joelteon> united is getting screwed in the butthole this game
* alexgordon collapses
<joelteon> so much cat vomit
<joelteon> why do cats spend so much time vomiting
<prophile> because if they spent that much time working on engineering they'd have had their own industrial revolution by now
<alexgordon> prophile: you could say the same about humans and eating!
<joelteon> but humans HAVE had their own industrial revolution by now
<joelteon> it's called the Industrial Revolution
<prophile> so you're saying food caused the industrial revolution?
<joelteon> i don't know
eligrey has joined #elliottcable
eligrey has quit [Read error: Connection reset by peer]
eligrey has joined #elliottcable
cloudhead has quit [Ping timeout: 248 seconds]
<purr> <devyn> If I don't go now, all of my dream characters will escap
cloudhead has joined #elliottcable
fwg has quit [Quit: gone]
<alexgordon> geeeeeting there
<alexgordon> anyone want to guess how many errors this thing is going to have when I first compile it?
<joelteon> 31
<whitequark> 0
<alexgordon> because I will never compile it?
<alexgordon> personally I'm thinking in the low hundreds
<whitequark> I think you're competent enough to not write bullshit, and it looks fine to me
<alexgordon> lol
<purr> lol
<alexgordon> yeah but this is generated by a python script
<alexgordon> so if it fails it'll fail HARD
<whitequark> yea
<alexgordon> mmmm
<alexgordon> MUCH better
<whitequark> hm?
<alexgordon> hold on
cloudhead has quit [Ping timeout: 240 seconds]
<devyn> -best tokyo jihen
<purr> TOKYOJIHEN IS BESTJIHEN
<whitequark> how do you think
<whitequark> which part of a microcontroller is the most complex ?
<whitequark> i'm thinking about stm32 series but this applies generally afaik.
<alexgordon> -best tokyo jihad
<purr> TOKYOJIHAD IS BESTJIHAD
<devyn> lol
<purr> lol
<devyn> 東京事変 = "tokyo incidents"
<devyn> it's a band
<whitequark> answer
<whitequark> it's the timers
<devyn> really?
<alexgordon> whitequark: I would have guessed clock
<whitequark> for example stm32l1x has five KINDS of timers
<alexgordon> though define complex
<whitequark> and every one has an insane number of obscure, sometimes aliased registers
<whitequark> the description of which takes about 250 pages of the datasheet
<whitequark> *reference manual
<whitequark> oh and it has a dozen or so of actual timers, ie instances of those kinds.
<devyn> 250 pages? shit
<whitequark> for comparison
<whitequark> reset and clock control: 31 page
<whitequark> power control: 13 pages
<devyn> wow
<whitequark> interrupts: 11 pages
<whitequark> it is amazing how much these timers can do
<whitequark> the amount of various modes you can build is in range of billions, I believe
<whitequark> also they can trigger e.g. DMA transfers or captures on other timers or ADCs
<devyn> well, for a microcontroller, timers are probably usually pretty important
<whitequark> which can in turn trigger timers or DMA transfers
<devyn> maybe they should just call microcontrollers "programmable timers"
<whitequark> you can pretty much run STM32's entirely on these timers, if you configure them properly
<whitequark> devyn: THIS.
<devyn> lol
<purr> lol
<whitequark> it's very deliberately done so, of course
<whitequark> because timers consume very little power
<whitequark> compared to some fucking RTOS
<whitequark> oh there are also two watchdogs and an RTC
<whitequark> which are also timers
<whitequark> and you can use them to trigger various stuff too
<devyn> huh
<whitequark> I think at least half of peripherals in this chip are timers
<joelteon> so i think reddit times out on about 15% of requests
<devyn> haha only during peak times for me
<devyn> I usually browse late at night and it's fine
<whitequark> by the way
<whitequark> i found an excellent set of articles about lattices
<whitequark> anyone interested
<devyn> sure
<devyn> thanks
<devyn> haha the word for non-drinker (下戸) literally means "low door" (implying that they don't drink because they have a low tolerance)
<whitequark> lol
<purr> lol
<alexgordon> nice
<joelteon> heh
<alexgordon> whitequark: this is making my head hurt
<devyn> lol
<joelteon> guess i better read it
<whitequark> alexgordon: I've made it only through the first article (no time for others yet)
<joelteon> oh, this is really cool
<joelteon> lattice-based programming
<whitequark> I've already wrote SCCP though so ... :)
* alexgordon skips to the end of article 3
<devyn> bad idea
<alexgordon> HOLY SHIT
<devyn> oh hey, that's cool
<whitequark> it's quite expensive and opaque though
<whitequark> good as an optimization
<joelteon> neat
<whitequark> I'd be wary of *basing* a language on this
<devyn> spend as much time on compilation as you want
<joelteon> people that invent this stuff are crazy though
<alexgordon> whitequark: hey elliott should add it to paws
<joelteon> like i can kinda follow along
<joelteon> but how do you think of that yourself
<whitequark> joelteon: I think it's trivial when you look at the right problem
<devyn> yeah, this is the sort of thing you just "come up with" when faced with a problem that requires it
<whitequark> you have to have a certain distaste for ad-hoc solutions though ;)
<joelteon> oh i do
<joelteon> weekends aren't a good time though
<alexgordon> hm
<alexgordon> currently problem: two while loops
<alexgordon> er
<alexgordon> I phrased that badly
<whitequark> alexgordon: "currently problem: two while loops" wat.
<purr> beep.
<alexgordon> while = WHILE expr body
<alexgordon> while = WHILE body
<joelteon> uh
<joelteon> what's the second one
<joelteon> while what
<alexgordon> infinite loop
<whitequark> well
<whitequark> body = ?
<joelteon> what about "forever"?
<joelteon> or "loop"?
<joelteon> or "while true"
<alexgordon> I guess
<whitequark> why the fuck is it a keyword
<whitequark> at all
<alexgordon> ha
<joelteon> while? it's useful
<alexgordon> because it's useful!
<whitequark> no
<whitequark> infinite loop
<alexgordon> it's useful!
<whitequark> rails is useful
<whitequark> add rails to your language
<joelteon> yeah, that sounds about right
<alexgordon> so you think that's not useful?
<joelteon> the overhead of adding a forever loop should be roughly the same as the overhead of adding rails
<whitequark> rails is much more useful than a forever loop!
<joelteon> parsing forever takes how many nanoseconds?
<whitequark> therefore, overhead is justified
<joelteon> that's wasted time
<alexgordon> I dispute that
<joelteon> yeah, overhead is justified, that's why i use bubblesort for everything
<whitequark> you don't get it obviously
<alexgordon> rails probably contains many forever loops
<whitequark> alexgordon: I don't think so
<alexgordon> "forever loops" is a misnomer anyway
<alexgordon> since you can break out of a "forever loop"
<whitequark> only if you have break statements
<whitequark> ocaml has not!
<alexgordon> break = BREAK
<whitequark> while true; done is truly forever
<alexgordon> see, furrow is more innovative than ocaml. It has break statements
<alexgordon> Q.E.F.D.
<whitequark> lol
<purr> lol
<whitequark> does it have first-class modules?
<alexgordon> is that a desirable thing to have?
<whitequark> I guess so
<devyn> obviously
<joelteon> it might, but it incurs overhead, so i doubt it
<alexgordon> it sounds complicated and not that useful
<devyn> be Ruby; first-class everything
<joelteon> ruby doesn't have first-class modules
<whitequark> it does lol
<joelteon> node does
<whitequark> <misinformed_ruby_pundit_mode>blocks in ruby aren't first-class</misinformed_ruby_pundit_mode>
<joelteon> unless you're talking about a different thing
<ELLIOTTCABLE> wat
<whitequark> module A; end
<whitequark> here, a first-class module
<devyn> :p
<joelteon> ok
<joelteon> what's the point of a first class module
<whitequark> ELLIOTTCABLE: do you have a highlight on ruby or node?
<devyn> Ruby doesn't have modules. It has "modules"
<devyn> :p
<ELLIOTTCABLE> no
<ELLIOTTCABLE> I have a hi light on elliottcable
<ELLIOTTCABLE> and on butts
<ELLIOTTCABLE> sorry I'm super-woozy
<ELLIOTTCABLE> dunno the last time I slept
<whitequark> go sleep now
<ELLIOTTCABLE> back to fucking with vim and preparing anti-nausea tea
<ELLIOTTCABLE> I can't sleep, have an invalid to care for
<whitequark> "invalid"
<whitequark> is that a valid english word
<devyn> yes
<whitequark> because it is in russian and I always thought it's weird
<alexgordon> omg ELLIOTTCABLE
<whitequark> joelteon: well
<alexgordon> whitequark: it's pronounced differently
<alexgordon> invalid vs invalid
<whitequark> in russian the last syllable is stressed
<whitequark> in english I guess the second one
<joelteon> yeah both are
<whitequark> so you are probably right
<whitequark> joelteon: re modules
<whitequark> it allows you to parameterize stuff with types
<whitequark> such as creating a hashtable for your particular key type, equality and hash functions
<devyn> it's in*val*id (not valid) vs. *in*valid (the noun)
<whitequark> devyn: what
<joelteon> ok
<joelteon> can't you do that with typeclasses
<alexgordon> whitequark: inVAlid = not correct. invaLId = sick person
<joelteon> INvalid = sick person
<devyn> alexgordon: in what accent? o.o
<alexgordon> british?
<devyn> INvalid = sick person
<devyn> yes
<whitequark> devyn: russian lol
<devyn> hm.
<purr> lol
<whitequark> UNCOVERED: ALEXGORDON IS ACTUALLY RUSSIAN
<devyn> lol
<whitequark> ARE YOU A FUGITIVE OLIGARCH?!
<alexgordon> devyn: I dunno I guess the first and last are the more or less the same
<joelteon> ok i definitely can't read ocaml documentation
<whitequark> joelteon: I think you can do that with typeclasses
<alexgordon> don't make me record myself and measure the amplitude :P
<whitequark> not sure to what extent
<whitequark> however modules are more powerful than that, ie they can encode existential types
<whitequark> that's imo an abuse of them though
* alexgordon says "invalid" to himself several times to make sure he's not going insane
<devyn> alexgordon: pitch is probably more reliable
<whitequark> lolinguistics
<alexgordon> dammit freenode can't do utf-8 nicks
<whitequark> irc cannot
<whitequark> and it's probably for better
<alexgordon> why not!
<whitequark> the potential for abuse is endless
<alexgordon> not 8-bit clean?
<whitequark> /nick white<ZWNJ>quark
<whitequark> or RTL shit
<whitequark> or combining shit
<whitequark> etc
<alexgordon> but it supports utf-8 messages
<joelteon> yeah i used to want to allow unicode usernames on stuff i made
<whitequark> read IANA considerations for IDN if you're curious
<alexgordon> © IS THEFT
<joelteon> but then i realized that's not worth it
<whitequark> alexgordon: messages don't authenticate anything
<whitequark> usernames sort of do
<whitequark> um lol
<purr> lol
<whitequark> actually this chip has timers 2-7 and 9-11
<whitequark> where the fuck are the rest of them
<whitequark> (answer: in the compatibility heaven)
<alexgordon> mmm chips
<alexgordon> so we were talking about while loops
<whitequark> did you know
<whitequark> that silicon valley is sometimes called silicon valley in russian
<whitequark> um, wait, I think the joke has been lost
<alexgordon> LOL
<devyn> hahahahaha
<whitequark> so there's "silicon" the element, which is "кремний" in russian
<whitequark> and it's why the valley is actually called so
<alexgordon> o_O
<devyn> kremniy?
<joelteon> jeepers kremniy
<whitequark> and there's "silicon" for breast implants, which is "силикон" in russian
<joelteon> silicone
<devyn> silikon
<devyn> haha
<whitequark> and some clueless journalist idiots called the silicon valley the breast implant silicon kind
<devyn> hahahaha
<alexgordon> whitequark: breast implants are siliconE
<joelteon> heh
<alexgordon> silly cone
<alexgordon> silly cones for fun bags
<joelteon> i WISH it was silicone valley
<devyn> joelteon: silikon is pronounced like that in russian
<alexgordon> that's how I remember it anyway
<joelteon> it's more like 95% male and mostly indian valley
<whitequark> and there used to be a celebrity whose name is "Долина", which is translated as Valley
<whitequark> and she definitely did have quite a bit of silicone in her body
<joelteon> heh
<devyn> haha
<devyn> silicone lolina
<purr> lolina
<devyn> dolina
<devyn> oops
<alexgordon> lolina
<devyn> I'm bad at cyrillic
<whitequark> дщд
<whitequark> lol
<alexgordon> devyn: russian phonetic keyboard layout ftw
<whitequark> I wish I never had to change layouts
<devyn> this one?
<joelteon> wow she's weird looking
<whitequark> perhaps
<whitequark> it is a decade old joke
<alexgordon> joelteon: botox :P
<whitequark> screw me if I remember
<devyn> yes, she has had tooons of plastic surgery
<devyn> she doesn't look azerbaijani
<joelteon> being off coffee is aggravating my anxiety
<devyn> run
<joelteon> good idea
<alexgordon> devyn: you can take the girl out of azerbaijan and apparently you can take the azerbaijani out of the girl
<devyn> haha