« first day (1896 days earlier)      last day (3242 days later) » 

00:00
@isaacg Could I pull the doc and make a huge improvement?
@Downgoat No it doesn't
It goes from code to AST in one step
The RPN stack is because it shunts operators
@KennyLau I'm totally open to pull requests
@Downgoat You don't need a tokenizer if everything's 1 character
@quartata okay, then have you finished a lexer for pytek?
Jolf only has one phase: interpreting. it does parsing and evaluation in the same step >_>
00:01
@Downgoat It's just a parser.
It doesn't work in the way traditional interpreters work. We refer to the interpreting in stages instead
Stage 1 takes the code and makes an AST
does anyone know any good blog posts on building a language?
Stage 2 takes the AST and turns it into a slightly more interpreter-friendly tree of special objects with stuff
Stage 3 is when the tree is traversed and stuff gets run
And yes it all works currently
@quartata lexer = the thing that goes over the code
@Downgoat I know what a lexer is.
00:03
The lexer and the parser are all one stage.
okay, you said it was just a parser before
oh wait
It is.
>_> I'm an idiot
Concatenative languages are great
CJam is concatenative
JavaScript languages > all other languages
00:04
What is concatenative?
JavaScript can run on Internet Explorer; how can it not be the best
@CᴏɴᴏʀO'Bʀɪᴇɴ The more formal way of saying stack-based
when you can write another language inside a language you've written... that's success
Why not postfix?
@Quill I need to do this now
00:06
@CᴏɴᴏʀO'Bʀɪᴇɴ That's not a paradigm that's a syntax style
@Quill brb writing language inside cheddar
done
@quartata oh. then what's pyth and jolf? Procedural?
@Downgoat maybe finish cheddar first ;p
@CᴏɴᴏʀO'Bʀɪᴇɴ GO DO YOUR HW
00:06
@Quill :/
AHHHHHHHH SOWEE FORGOT
okay, fine
WTF IS WRONG WITH ME
@CᴏɴᴏʀO'Bʀɪᴇɴ STAHP FORGETTING
PRESSING CTRL+W BAI
00:07
@CᴏɴᴏʀO'Bʀɪᴇɴ SAME PROBLEM WITH ME, BUT JUST DO IT
bai
@EᴀsᴛᴇʀʟʏIʀᴋ you missed it, I was batman in voice chat earlier
how could you miss it
Hi batman @Quill
@Quill NOOOOOOOOOOOO
or were you here this whole time?
@Quill i don't believe you.... >_>
00:08
I still see Conor…
also why is Riker in small caps?
funness
I have come to the small cap side.
Finishing the Cheddar parser feels like PPCG graduation. I am so damn excited but I don't know what to do with my life anymore...
Serial voting on my questions ಠ_ಠ
@ZachGates upvotes or downvotes?
00:14
Both
@Quill Skype group? :o
if anybody sees conor, tell him to get his ass doing hw.
@ZachGates both skype and discord exist.
@ZachGates discord
@EᴀsᴛᴇʀʟʏIʀᴋ what are you, his mother?
no.
his annoyer.
@ZachGates I always thought your profile pic was you wearing a white and goldish shirt.........
@CᴏɴᴏʀO'Bʀɪᴇɴ Yes, procedural
Now I realize that is a brick arch.
I just realized codejam starts in ~24 hours.
00:20
peanut butter and codejam
@EᴀsᴛᴇʀʟʏIʀᴋ Wait.. it isn't??
@ZachGates I think arch in the bg?
@CᴏɴᴏʀO'Bʀɪᴇɴ ...
....cussing son of a cuss word
sowee
you can stays
i no bugs
oh I finished the layouts!
@CᴏɴᴏʀO'Bʀɪᴇɴ @CoolestVeto @Downgoat: github.com/RikerW/Small-Caps-keyboard-layout
@EᴀsᴛᴇʀʟʏIʀᴋ how do I install it?
00:25
read the readme
sigh I hate reading docs...
it's like one paragraph long
@Quill !!!
@EᴀsᴛᴇʀʟʏIʀᴋ please golf
one paragraph... more like one word
00:26
TL;DR: Put it in ~/Library/Keyboard Layouts/.
also can I remove the space after "Fraktur" or will that break it?
@Downgoat it shouldn't matter
Sᴍᴀʟʟ ᴄᴀᴘs
@EᴀsᴛᴇʀʟʏIʀᴋ It's actually a fairly edited photo
ʏᴀʏ, ɪᴛ ᴡᴏʀᴋs!
00:27
nice job m9
@EᴀsᴛᴇʀʟʏIʀᴋ ᴛʜɪs ɪs ᴄᴏᴏʟ, ɢʀᴇᴀᴛ ᴊᴏʙ!
And you added it to input sources in system preferences?
And did you even see the others?
𝕪𝕖𝕤
ℑ 𝔡𝔦𝔡
I don't know if anyone else noticed this but this is cool (read demented):
1
A: "Hello, World!"

AdnanBTClang, 53 bytes My newest invention! BTClang is short for Bitcoin language. Although it has nothing to do with bitcoins, it shares some similiarities with this language. Code: 4|$&2h 2|A% 3|Im! 3|%([F 2|!4P 2|"Cv 3|zJO 1|!M 2|!&r Explanation: First of all, each line of the code consists of...

00:32
what does Python do if you add two things that can't be added together?
ok, that is what Cheddar's behavior will be then
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct  6 2014, 22:15:05) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 3 + ""
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>
what should Cheddar's behavior be for int+string?
Check if the string is an int
00:34
int.toString() + string
add them as ints if it is (or a float)
should it do String:int + string?
ok
writing the interpreter is waay more fun then writing the parser...
Coercing to int is nice on paper but it could result in nasty things in practice
00:35
I like writing a parser
If you do do it like that do it like Perl: + is add and . is concat
except for the edge cases
+ always tries to coerce to int
. always coerces to string
@Downgoat, for primitives you should try and do it like javascript, but for types that inherit Object, throw an error IMO
@Quill NO
00:35
@Quill oh no no no
and why is that
JavaScript has the stupidest type casting system
please no
[] + [] should NOT be ""
Array isn't a primitive....
00:36
That's true, but helpful for JSFuck
@Quill it is (in Cheddar)
[] + ![] = false
JS everybody
Also @Downgoat please PLEASE make integers and floats separate types
{} + {} = NaN
@quartata why?
@Downgoat oh my
console.log([] == "") //true
console.log(![] == !"") //false
00:38
Because [] is truthy.
@CᴏɴᴏʀO'Bʀɪᴇɴ that is dumb. [] should be falsey
@QPaysTaxes that's a chrome and V8 thing, not JavaScript spec
10000000000000000 == 9999999999999999
true
@Downgoat ik
@quartata That's just number types, not just javascript
@quartata no, make the default int type bignums
bignums are fucking magic
@CᴏɴᴏʀO'Bʀɪᴇɴ That's why integers should be separate from floats
@quartata Cheddar will use my ulta-fast BigInt library for large numbers
Floats lose precision like that
@Downgoat Has nothing to do with the size.
It's because all numbers are floats in JS
They lose precision which causes dumb shit like that
00:39
bigint = infinite prescision
If they were longs or something that wouldn't happen.
I mean, it would happen, just at a very high number instead
Please PLEASE do NOT make integers and floats one type
@ZachGates check your skype account.
@quartata shut up already >_>
00:40
Oh, long int instead of long float
@RenderSettings Yeah.
@quartata bignum = infinite prescision
@CᴏɴᴏʀO'Bʀɪᴇɴ You understand why that's a problem right?
there is no need to sepearate them
bignum = black magic
@Downgoat SPELEING
@Downgoat Why use a heavy-memory arbitrary precision number when a long can hold both those numbers
incidentally, Hoon's atoms are bignums and it's glorious
@quartata I really don't care honestly. it doesn't affect my coding, so I don't care. If it were to, then I'd just use a different tool.
00:41
@QPaysTaxes ints will convert to bigints once a certain limit has been exceeded
>heavy-memory
bro do you even gmp
@RenderSettings Yes I do
Still no point in using one when a long is fine
@quartata Not false, "false".
@Dennis even worse
@QPaysTaxes [] + ![] doesn't produce false it produces the string "false"
00:42
> [] + ![]
< "false"
haha what
@CᴏɴᴏʀO'Bʀɪᴇɴ finished your hw?
It makes sense if you actually consider JS's arithemtic process.
![] = 0
[] = ""
00:42
@Maltysen not even close
@quartata that's not right
> {} + {}
< NaN
> ({} + {})
< "[object Object][object Object]"
[1,2] + [3,4]
"1,23,4"
rofl
@Dennis ALL OF THESE EXAMPLES ARE PERFECTLY FINE, MOVE ALONG CITIZEN
@Dennis ok, that one I don't get
I think it's [] + false -> "" + false -> "false"
00:43
oh, I get it
I'm planning on writing a blog post that explains that javascript stuff
It coerces the boolean to a string
@Quill You can't defend this kinda stuff. I'm sorry, it's just wrong.
=== is great though
@quartata so useful though
Not even Perl does this level of coercion, and Perl freaking STORES numbers as strings
@Quill Please write it at least unbiasedly, I do not want to read another fucking bunch of vapid nonsense
00:44
@quartata I can and will defend this stuff... and then I will eat a pizza
@QPaysTaxes Well, it's one of three ways it can store it.
@Quill \o/ js pizza shield
Depends on the context.
How can you attack JS if you stand behind a shield of perl?
00:45
@Maltysen (Forgive my terminology. I have no interest in learning JavaScript properly.) {} is a code block in the first example, but a dictionary in the second.
That...might be even worst?
@Maltysen Really? The last thing I want in production code is having to spend 10 minutes figuring out how something gets coerced and having it explode in my face
@CᴏɴᴏʀO'Bʀɪᴇɴ do you mean that from the perspective of a javascript hater or fanboy
@Quill fanboy
@quartata i'm not saying its good overall, just that its useful (but IMO tink its is good overall)
00:46
@QPaysTaxes PascalCase for classes. camelCase for methods
Although both terms are derogatory IMO please don't use them in any intellectual debate on JS
@CᴏɴᴏʀO'Bʀɪᴇɴ where did he do that?
ohai @Phrancis
@quartata There's no such thing. the same shit is thrown around every time
00:46
@Maltysen Useful in golfing that's for sure
@Dennis why is it different?
> Everything Jelly has. 'Nuff said.
3
...
@CᴏɴᴏʀO'Bʀɪᴇɴ did you mean like "don't be a biased fanboy" or "don't be a biased hater"?
@Quill Be unbiased
Oh shit does that form show my real name on my Google account
00:47
@Maltysen Because a code block in parens would be a syntax error, so it's assumed to be a dict.
@Dennis Code blocks aren't a type; I think that's just what happens when you add dictionaries
@Dennis oh that's wicked cool
> Number, PIZAAA
who is posting these ._.
00:48
@quartata empties eval to undef iirc
I only did that one.
@QPaysTaxes Because I have a Google+ account for RL shit
And I was using Chrome on an old computer where I don't have a different Google account as default
@quartata it only stores the timestamp of posting
@Downgoat OK, thanks.
Can we see results?
00:49
@quartata are you a criminal or something?
and ^^
@EᴀsᴛᴇʀʟʏIʀᴋ No...
Then why are you so afraid?
Just wondering.
@CᴏɴᴏʀO'Bʀɪᴇɴ ^
Because his name is "Herbert Tata"
@EᴀsᴛᴇʀʟʏIʀᴋ @quartata IF YOU HAVE NOTHING TO HIDE YOU HAVE NOTHING TO BE AFRAID OF
00:50
Not a fan of having my privacy invaded, that's all
> varyable
hehe
mapToFortyTwo haha
> {42}
< 42
> {42:42}
X Uncaught SyntaxError: Unexpected token }(…)
> ({42})
X Uncaught SyntaxError: Unexpected token }(…)
> ({42:42})
< Object {42: 42}
@quartata ^
Whoever posted "split to array grid of chars and rows". could you explain what that is supposed to mean?
@Quill That was mine :D
@Downgoat That was me
00:52
@Dennis the second example works fine on chrome
string.split`
`.map(x => x.split``);
ah, okay
@Quill The latest version of Chrome wraps parens around everything you execute in the dev console. It's not supposed to do that.
> String how do I get to the bus stop?
ಠ_ಠ
It's not golfing, just ES6.
00:54
I'd argue using template strings to simplify the parenthesis on the function is golfing
@Downgoat where is this from?
@Downgoat Anyways, submitted a whole bunch of built-ins
(serious ones)
Tell me if you need any explanations
00:55
@Maltysen from the Cheddar built-ins reccomendation
(they should be fairly obvious)
btw is cheddar a golfing lang?
oh lel, some of my submissions should be ignored then
00:56
@Maltysen it is a real big-boy language
I feel somewhat guilty because some (very few) of the ideas I'm slipping you are also ideas I'm putting in Pytek...
I'm sorry @El'endiaStarman I've betrayed you
> Any interable, my dog is named steve
...
OK...

« first day (1896 days earlier)      last day (3242 days later) »