![Planet Haskell](https://i1.feedspot.com/4955027.jpg?t=1621836112)
Planet Haskell
182 FOLLOWERS
Haskell is an advanced purely-functional programming language. An open-source product of more than twenty years of cutting-edge research, it allows rapid development of robust, concise, correct software. With strong support for integration with other languages, built-in concurrency and parallelism, debuggers, profilers, rich libraries, and an active community, Haskell makes it easier to produce..
Planet Haskell
3w ago
After 6 months of hard work, I am happy to announce that Solve.hs now has a new module - Essential Algorithms! You’ll learn the “Haskell Way” to write all of the most important algorithms for solving coding problems, such as Breadth First Search, Dijkstra’s Algorithm, and more!
You can get a 20% discount code for this and all of our other courses by subscribing to our mailing list! Starting next week, the price for Solve.hs will go up to reflect the increased content. So if you subscribe and purchase this week, you’ll end up saving 40% vs. buying later!
So don’t miss out, head to the course s ..read more
Planet Haskell
3w ago
GHC 9.6.6 is now available Zubin Duggal - 2024-07-01
The GHC developers are happy to announce the availability of GHC 9.6.6. Binary distributions, source distributions, and documentation are available on the release page.
This release is primarily a bugfix release addressing some issues found in the 9.6 series. These include:
A fix for a bug in the NCG that could lead to incorrect runtime results due to erroneously removing a jump instruction (#24507).
A fix for a linker error that manifested on certain platform/toolchain combinations, particularly darwin with a brew provisioned toolchain, ar ..read more
Planet Haskell
3w ago
This is just a quick note about some more interesting algebraic structure, and how that structure can help with generalizing an idea. None of this is new, but it’s the perspective it sheds on the problem solving process that was interesting to me.
Defining the EWMA
And exponentially weighted moving average or (EWMA) is a technique often used for keeping a running estimate of some quantity as you make more observations. The idea is that each time you make a new observation, you take a weighted average of the new observation with the old average.
For a quick example, suppose you’r ..read more
Planet Haskell
3w ago
This blog has become a bit quiet since I joined the Lean FRO. One reasons is of course that I can now improve things about Lean, rather than blog about what I think should be done (which, by contraposition, means I shouldn’t blog about what can be improved…). A better reason is that some of the things I’d otherwise write here are now published on the official Lean blog, in particular two lengthy technical posts explaining aspects of Lean that I worked on:
Recursive definitions in Lean
Functional Induction theorems
It would not be useful to re-publish them here because the technology verso be ..read more
Planet Haskell
1M ago
Products with unordered n-tuples
Posted on June 25, 2024
Tagged type-level programming, Haskell, product, unordered, tuples
Recently, Dani Rybe wrote this really cool blog post (in turn based on this old post by Samuel Gélineau) about encoding truly unordered n-tuples in Haskell. This is something I thought about a long time ago in my work on combinatorial species, but I never came up with a way to represent them. Samuel and Dani’s solution is wonderful and clever and totally impractical, and I love it.
I won’t go into more detail than that; I’ll let you go read it if you’re interested. This b ..read more
Planet Haskell
1M ago
My spiciest take on tech hiring
… is that you only need to administer one technical interview and one non-technical interview (each no more than an hour long).
In my opinion, any interview process longer than that is not only unnecessary but counterproductive.
Obviously, this streamlined interview process is easier and less time-consuming to administer, but there are other benefits that might not be obvious.
More effective interviews
“When everyone is responsible, no one is responsible.”
Interviewers are much more careful to ask the right questions when they understand that nobody else will be ..read more
Planet Haskell
1M ago
I've spent most of my career on the server side. In the past few years, the projects I've been running have included significant TypeScript+React codebases, which has given me a crash course in the framework. About six months ago, I decided to look into Rust frontend frameworks, and played around with Leptos. I ended up writing a simple utility program with Leptos. Overall, the process was pretty nice, and the performance of the app was noteworthy. (Meaning: other team members commented on how responsive the app was.) However, I never felt like I fully grokked Leptos. In particular, I felt lik ..read more
Planet Haskell
1M ago
Posted on 2024-06-24 by Oleg Grenrus
In hashable-1.4.5.0 I made it use a XXH3 algorithm for hashing byte arrays. The version 1.4.5.0 and 1.4.6.0 backlashed, as I enabled -march=native by default, and that causes distribution issues. Version 1.4.7.0 doesn't enable -march=native by default.
This by default leaves some performance on the table, e.g. a quick benchmark comparison on my machine (model name: AMD Ryzen Threadripper 2950X 16-Core Processor) gives
Benchmark without with
hash/Text/strict/11 1.481e-8 1.289e-8 -12.95%
hash/Text/strict/128 0.319e-7 0.263e ..read more
Planet Haskell
1M ago
A few months ago I noticed the banner image of Mastodon user @emacsomancer@types.pl:
I had two questions about this. First where is it from and is there more? @emacsomancer pointed me to the source Github repository and also to this magnificent hand-lettered interpretation of it by artist Michał "phoe" Herda, who is also an author of books about Lisp.
My other question was more particular: The graphic renders Roman numerals 1, 2, 3, 6, 7, and 8 as i, ij, iij, vi, vij, and viij, respectively. The trailing j's are historically accurate. Medieval accounts often rendered the final 'i' in a Roman ..read more
Planet Haskell
1M ago
Competitive Programming in Haskell: sieving with mutable arrays
Posted on June 21, 2024
Tagged challenge, Kattis, number theory, sieve, mutable array
In a previous post I challenged you to solve Product Divisors. In this problem, we are given a sequence of positive integers \(a_1, \dots, a_n\), and we are asked to compute the total number of divisors of their product. For example, if we are given the numbers \(4, 2, 3\), then the answer should be \(8\), since \(4 \times 2 \times 3 = 24\) has the \(8\) distinct divisors \(1, 2, 3, 4, 6, 8, 12, 24\).
Counting divisors
In general, if \(a\) has th ..read more