I am a beginner: I have read 1½ books on Haskell. I want to practice.
Haskell is a purely functional, lazily evaluated, strongly typed (with inference) language.
Project Euler is a set of problems combining mathematics and programming. Of the 500 problems published so far I have solved 25. For the easy problems, advanced math is easily avoided by using advanced CPUs; but (re)learning bits of math is fun too.
- Solve some more problems
- Write readable code
- Follow a style guide
- Document the libraries (with Haddock)
- Have tests to catch bugs in refactoring. Try:
- Doctest
- HUnit
- HSpec
- QuickCheck (which was the tipping point for me to seriously try Haskell)
- Benchmark
- Profile
- Package (with Cabal)
The result will be a public Git repository with code and a diary to summarize things learned.
This project is part of:
Hack Week 12
Activity
Comments
Be the first to comment!
Similar Projects
GHC-9.14 and split Hadrian from GHC build by osukup
Description
Prepare openSUSE Tumbleweed project for new GHC Haskell compiler and separate builder (Hadrian) from GHC build
Goals
- have GHC-9.14 project with working compiler and if possible filled with packageset
- have Hadrian in own package built with bootstrap compiler to separate Hadrian bootstrap from ghc bootstrap
Resources
opensuse haskell package gen project
eBPF bytecode emitter in Haskell by kalfalakh
Description
Newbie level knowledge of eBPF and some knowledge of Haskell. The goal for this hackweek is to catch two birds with one stone; get familiar with eBPF and learn more about Haskell, hence implement something related to eBPF in Haskell. Given an input, which is a program, represented as eBPF instructions, prepare a fully built eBPF bytecode ready to be loaded into the Kernel.
Goals
- Recap on ADTs in Haskell, type classes and their instances / deriving, on pattern matching and higher order functions
- Read and understand RFC 9669
- Implement the entire pipeline; parsing the input, verifying the input, building instructions, encoding them and concatenating them
- Deal with all the learning, bugs and difficulties encountered on the way
Progress
Last day of hackweek and this is what I have so far.
- ADTs implemented to correctly type all operations, classes, opcodes, instructions and other instruction specific types
- opcodes and opcode builders based on specification are implemented.
- Encoder is ready for 64-bit instruction format. Extended 128-bit instruction format is not yet supported
- Only ALU and ALU64 instructions API is provided. JMP, LD, ST for base32 and base64 are missing. swap and atomic are missing
- All ALU and ALU64 instructions (except MOV and MOVSX) are tested manually and are correctly encoded
Whats next?
There is still a lot left to do:
- Input parser and formatter + some kind of basic verifier
- API for remaining instruction classes
- Proper testing mechanism
- swap and atomic instructions
- Loader
Resources
- RFC 9669
- https://ebpf.io/
- https://www.haskell.org/documentation/
Learn hot air soldering for GBA-CPU and RAM transfer by robert.richardson

Description
I want to practice hot‑air soldering to then transfer a Game Boy Advance CPU and RAM from a damaged unit onto a new "custom" motherboard.
Goals
I want to first learn the hot air soldering fundamentals by removing a couple of components from already broken electronics.
My final goal for the project would be to de-solder the CPU/RAM units of a damaged Game Boy Advance motherboard and re-solder them onto a new "custom" one.
If anyone here wants to also try hot-air-soldering, feel free to come by the NBG office. I plan to do this on Tuesday and/or maybe Wednesday. If you would like to join but are only able to on another day, let me know.
Resources
I basically already have everything needed, except maybe for the broken electronics to test on, but i'm sure i'll find something until Hackweek starts.
Equipment
- Hot air soldering gun
- Soldering iron
- Solder, Flux, Sponge, De-solder, etc..
Components
- Old GBA Motherboard with working CPU & RAM
- New GBA Motherboard
- Metal/Glass GBA Case
- Metal GBA Buttons
toki pona programing language by dgarcia
Description
Toki Pona is a philosophical and artistic constructed language designed for its small vocabulary, simplicity, and ease of acquisition.
The idea is to bring the idea of simplicity to a new programing language using this language words and limitations to implement it.
The name for this programming language could be: "toki ilo" or "ilo pona". I will ask the community to get other ideas and also to get feedback about the initial design.
The idea is to start to implement something as a gcc frontend.
Goals
- The language design should be really simple but completely functional:
- functions
- variables
- conditional
- loop
- data structures
- The keywords should be from toki pona, and better if could be read as pseudo code in toki pona
- It should be possible to "compile" code written in sitelen pona
Resources
- https://en.wikipedia.org/wiki/Toki_Pona
- https://wasona.com/
- https://nimi.li/
- https://en.wikipedia.org/wiki/Sitelen_Pona
- GCC frontend tutorial