youtu.be/U3GQePblz4M
What is the easiest language?
@mattrusselluk.bsky.social
youtu.be/U3GQePblz4M
What is the easiest language?
Not explicity, but I was trying out the imperative-ish do syntax, and I believe that uses partial functions when desugared. For example:
private def infiniteLoop: Nat := Id.run do
let mut n: Nat := 0
while true do
n := n + 1
n
Blundered into my first infinite loop bug in Lean - and it seems Lean isn't really as set-up to help rule out certain runtime issues ("panics" and non-termination) as I had initially assumed. A teeny bit disappointed!
09.12.2024 17:28 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0I would love a chiller version of AOC where all the problems are first-week level of difficulty.
08.12.2024 15:04 โ ๐ 2 ๐ 1 ๐ฌ 1 ๐ 0Nice! I'm really thrown by Lean's imperative syntax in do blocks - for loops, while loops, mutation. I need to read up on what's going on!
08.12.2024 20:42 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0"Falling in love" and "thinking it sucks" are both limiting perspectives on TypeScript. It's a remarkable piece of pragmatic programming language tech that bolts some sanity on top of JS and its ecosystem - but all the warts of JS are all still there. The Web should aspire to better.
08.12.2024 20:08 โ ๐ 3 ๐ 0 ๐ฌ 0 ๐ 0Day 8 Advent of Code in Lean: github.com/mdr/aoc-2024...
08.12.2024 19:55 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0I keep trying to migrate this one and the video gets corrupted. Itโs just that powerful!
#FunctionalProgramming #Haskell #OCamel #Programming
React but for TUIs would be fun, I bet that exists already
05.12.2024 10:30 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Day 5 of #AdventofCode in Lean: github.com/chenson2018/...
One of my favorite days so far, came out very cleanly. Having quicksort in the language is nice. I enjoyed writing the function to get the middle of an Array with a provably correct index, though ran into some decidable equality trickiness.
Advent of Code Day 5 in Lean: github.com/mdr/aoc-2024...
05.12.2024 08:14 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0What does a partial def do?
04.12.2024 19:42 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0github.com/mdr/aoc-2024...
I stole and ported this "diagonals" function for today's puzzle. It might be interesting to prove some properties about it, e.g. that the elements of `join (diagonals grid)` are the same (ignoring order) as the elements of `join grid`.
It would work, but the extra wrappers would make me sad:
[ShapeCircle (Circle 3.0), ShapeSquare (Square 4.0)]
How do you find it compared to the proprietary models?
04.12.2024 15:45 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0Day 4 Advent of Code in Lean: github.com/mdr/aoc-2024...
I suspect I might begin to fall behind the daily pace soon! Today's was a straightforward puzzle, but it took me a while to get both parts working as a Lean novice.
Are you thinking along the lines of:
data Circle = Circle { radius :: Double }
data Square = Square { side :: Double }
data Shape where
CircleShape :: Circle -> Shape
SquareShape :: Square -> Shape
filterCircles :: [Shape] -> [Circle]
A Shape must be a Circle or a Square. In Scala, I can write
def findCircles(shapes: List[Shape]): List[Circle]
In Haskell (and other FP languages), I'm stuck with:
findCircles :: [Shape] -> [Shape]
Is there a way to achieve the expressivity of the former if you lack subtypes?
PostHog is a top tier name for (amongst other things) a session replay tool!
03.12.2024 19:32 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0I hadn't come across Dave Farley before, but he talks a lot of sense!
03.12.2024 19:26 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Microservices are just technical debt: www.youtube.com/watch?v=LltD...
03.12.2024 15:07 โ ๐ 2 ๐ 1 ๐ฌ 1 ๐ 0Day 3 Lean Advent of Code solution:
github.com/mdr/aoc-2024...
I used regexes (but there was enough unpacking of matches that I suspect parser combinators would have been cleaner), and State monad to turn on/off instructions (probably overkill).
Me too! I did Unison last year, and Idris the year before. I suspect I might only get through a dozen puzzles or so, but I like the excuse to tinker with something new.
02.12.2024 21:31 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Day 2 Advent of Code solution in Lean: github.com/mdr/aoc-2024...
Lean's syntax sugar where you can call certain functions as if they were methods or properties - e.g "report.differences.toSet" - is very pleasant, especially if your day job is OO languages.
I'm trying to learn a little #leanlang theorem proving as well as use it as a programming language for Advent of Code. I would especially like to get to where I could start to prove some simple properties about programs!
02.12.2024 21:22 โ ๐ 3 ๐ 0 ๐ฌ 1 ๐ 0๐ Just in time for your #AdventOfCode puzzles, the latest Unison version, 0.5.29 contains a few code rendering improvements and a hefty performance boost for some programs using the standard interpreter.
02.12.2024 20:57 โ ๐ 11 ๐ 4 ๐ฌ 0 ๐ 0I like Lean's Nested Actions syntax
lean-lang.org/lean4/doc/do...
Day 1 Advent of Code solution in Lean
github.com/mdr/aoc-2024...
Thanks! Where does the Discord server live?
01.12.2024 11:27 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0I did look at the Lean Zulip, it does feel a bit intimidating though!
01.12.2024 11:11 โ ๐ 3 ๐ 0 ๐ฌ 1 ๐ 0