This was a fun talk, I was a bit surprised and saddened by the answer to the question about lens - I had the same thought, and the implementation of pens is truly beautiful. Conor I think you’d get a lot out of learning the tools lens gives you and see some parallels with APL; it’s a tool that’s,really changed how I think about writing Haskell because it gives you a whole new vocabulary for talking about accessing and modifying data (and the number of functions where they’re just a type restricted call to traverse is quite amusing).
At 1:17 I stopped to translate the html tag filter into Python, and it was pretty fun: def tagless(html): tags = [char in "" for char in html] flip = 0 between = [(flip:=not flip if t else flip) for t in tags] return "".join(c for c,t,b in zip(html, tags, between) if not (b or t)) Hate having to initialize a value for that "between" scan, and hate having to come up with those temporary names, but otherwise a lovely exercise to get a grip on an APL-like style
Dang it! Now I'm really going to have to delve in the APL language. Good presentation to motivate interest in the language. Just for the Notational beauty alone. XD
technically, if you wanna be pedantic mathematically. The less-than function's inverse is the greater-than-or-equal function. Because the equal case is false for one, but true for the other. Same is true for the other pair. It's not as visually beautiful given that the symbols don't mirror eachother, but it fits better semantically a >= b := !(a < b) a b)
I decided to try this (1:21:00) in my favorite language, Rust. I'm not a functional expert, but I got my solution down to 5 calls, including `.chars()` and `.collect::()`!!
I submitted my combinators talk to Lambda Days 2023. I will post it to my RUclips channel (if it gets accepted) at the same time twitter.com/code_report/status/1600613558252871689?t=FOMoMMeIBKRcmcToSjG-7g&s=19
It really is mostly like Chinese- lots of separate “words” coded as single symbols (Chinese often has two character “words” nowadays, but 1500 years ago, it was just like APL). There are only a few “glue” elements, but those in fact are structured as operators, “functions” that take regular functions as operands. Finnish, Hungarian, and Japanese (even with characters) organize things very differently.
@@q_rsqrt5140 Something pretty based, coded in python, is 3blue1brown's library that he uses to make his videos (altho its better to use the community version of it)
I believe that LOTR The Twin Towers might have been a better theme, there are about 5 notable towers in that movie and at least 5 notable algorithms in this talk :v)
Numpy (python) has outer! ufunc.outer(arr1, arr2) But ufunc needs to be a numpy compatible function, not just any function. Numpy comes with basic ones, like arithmetic and logical operations, but it's a bit complicated to set up your own ufuncs. I think the canonical way is to write it in C, but the simplest way I know is to do it through numba.vectorize.
I really enjoyed the talk, this is exactly the kind of stuff I like, and you are a good presenter.
13:45 that’s me!
46:16 what about "BQN = APL + Fibonacci" ?
Haha, that is amazing : )
This was a fun talk, I was a bit surprised and saddened by the answer to the question about lens - I had the same thought, and the implementation of pens is truly beautiful. Conor I think you’d get a lot out of learning the tools lens gives you and see some parallels with APL; it’s a tool that’s,really changed how I think about writing Haskell because it gives you a whole new vocabulary for talking about accessing and modifying data (and the number of functions where they’re just a type restricted call to traverse is quite amusing).
At 1:17 I stopped to translate the html tag filter into Python, and it was pretty fun:
def tagless(html):
tags = [char in "" for char in html]
flip = 0
between = [(flip:=not flip if t else flip) for t in tags]
return "".join(c for c,t,b in zip(html, tags, between) if not (b or t))
Hate having to initialize a value for that "between" scan, and hate having to come up with those temporary names, but otherwise a lovely exercise to get a grip on an APL-like style
1:39:04 “that’s a rotate”
Thank you.
Dang it! Now I'm really going to have to delve in the APL language. Good presentation to motivate interest in the language. Just for the Notational beauty alone. XD
APL Wiki should help you get started.
technically, if you wanna be pedantic mathematically. The less-than function's inverse is the greater-than-or-equal function. Because the equal case is false for one, but true for the other. Same is true for the other pair. It's not as visually beautiful given that the symbols don't mirror eachother, but it fits better semantically
a >= b := !(a < b)
a b)
I decided to try this (1:21:00) in my favorite language, Rust. I'm not a functional expert, but I got my solution down to 5 calls, including `.chars()` and `.collect::()`!!
57:56 Which site do you use to comparing those `reduce` functions in different languages?
It is my site, www.hoogletranslate.com but it isn't online yet, hopefully in the next two years.
What tech did you use to make the slides? Very pleasing and modern, me likey.
Microsoft PowerPoint
@@code_report oh wow looks nice
Any update on the combinators talk/ blackbird?
I submitted my combinators talk to Lambda Days 2023. I will post it to my RUclips channel (if it gets accepted) at the same time twitter.com/code_report/status/1600613558252871689?t=FOMoMMeIBKRcmcToSjG-7g&s=19
7:13 To be fair, APL mostly resembles hungarian, or maybe finnish, with the concatenative approach of building up new phrases, and terms.
It really is mostly like Chinese- lots of separate “words” coded as single symbols (Chinese often has two character “words” nowadays, but 1500 years ago, it was just like APL). There are only a few “glue” elements, but those in fact are structured as operators, “functions” that take regular functions as operands. Finnish, Hungarian, and Japanese (even with characters) organize things very differently.
29:38 As a uruguayan I beg to differ :P
Thanks for the insights!
What software do you use for presentations?
Microsoft PowerPoint. His sleek animations are Transition:Morph, with Effect Options:Characters.
@@abrudz I was hoping for something text based :c anyway, thanks!
@@q_rsqrt5140 Something pretty based, coded in python, is 3blue1brown's library that he uses to make his videos (altho its better to use the community version of it)
does functional geekery post their pods on spotify or something
Doesn't look like it. You can find them on most podcast apps tho.
I believe that LOTR The Twin Towers might have been a better theme, there are about 5 notable towers in that movie and at least 5 notable algorithms in this talk :v)
1:02:14 heh what this font is? yeah
Consolas
@@code_report niiiiice it looks different in low quality. then what this color scheme? thanks
@@AMith-lv2cv Material Theme (Ocean)
@@code_report thanks, i'll be waiting for new videos. there are awsome
Just switch to a language that can pipe stuff dude....
why a goal against Uruguay? im pissed off... dislike, unsubscribe and report (just kidding)
Haha, I forgot to mention I am 1/2 Dutch :p (so a big Netherlands fan)
Numpy (python) has outer! ufunc.outer(arr1, arr2)
But ufunc needs to be a numpy compatible function, not just any function. Numpy comes with basic ones, like arithmetic and logical operations, but it's a bit complicated to set up your own ufuncs. I think the canonical way is to write it in C, but the simplest way I know is to do it through numba.vectorize.