I think I'm pretty much doing pi approximations in every language now, so, here it is in Haskell!
I was going to do NASM before Haskell (and actually before Raku even), but ran into some issues with floating point numbers that I'm currently working on fixing (if you know how to fix it, please tell me here: https://repl.it/talk/ask/NASM-Print-Floating-Point/41105).
Here are the other approximations so far:
Raku - https://repl.it/talk/share/p-in-Raku/41111
Rust - https://repl.it/talk/share/p-in-Rust/41056
Go - https://repl.it/talk/share/p-in-Go/40950
Swift - https://repl.it/talk/share/p-in-Swift/36150
C# - https://repl.it/talk/share/p-in-C/36141
Bash - https://repl.it/talk/share/p-in-Bash/36133
Kotlin - https://repl.it/talk/share/p-in-Kotlin/36125
Ruby - https://repl.it/talk/share/p-in-Ruby/34982
Java - https://repl.it/talk/share/p-in-Java/34978
QBasic - https://repl.it/talk/share/p-in-QBasic/34973
Fortran - https://repl.it/talk/share/p-in-Fortran/34890
APL - https://repl.it/talk/share/p-in-APL/34888
Forth - https://repl.it/talk/share/p-in-Forth/34652
LOLCODE - https://repl.it/talk/share/p-in-LOLCODE/34421
Python and Node.js (Node is linked in post) - https://repl.it/talk/share/2-Approximations-of-p-In-Only-Four-Lines-of-Code/32773
C - https://repl.it/talk/share/p-Approximations-in-C/33461
Credit to @NoelBryan, @TheForArkLD , @Warhawk947 , and @LizFoster for inspiring these approximations. Most of these use the Nilakantha Series, although I also use the arctangent method (multiplying the radian arctangent of 1 by 4 to get pi and getting the arctangent with an infinite series) in three of them (Python, Node, and C).
Also, credit to @StudentFires for inspiring this approximation in Haskell!
Next up is NASM (Assembly; only if I can actually figure it out. I might have to save it for later since it is so difficult to program in. I keep pushing it back anyways due to issues with printing floating point numbers), followed by R, followed by Dart. If you have any suggestions for after those, please let me know!
Note: This is slow since Haskell doesn't have loops and only has recursion and it needs to run the same function a lot of times.
It's probably slow because of how you defined
a -- each of them loops a large number of times every iteration!
Here's a faster implementation of the same algorithm! https://repl.it/@Zekka/A-faster-Haskell-pi#main.hs
Um, I think your doing something wrong, Haskell doesn't have loops, but recursion is optimized to a loop in Haskell. Oh, that's for simple tail recursion.