I'm a software engineer specialising in functional programming, based in Taiwan.
I'm passionate about building software that is reliable and correct.
I'm the maintainer of several Haskell packages:
The monoidmap package provides the MonoidMap type, which represents a total function from keys to monoidal values with finite support and a default of mempty.
There are several complementary packages:
| Package | Description |
|---|---|
📦 monoidmap |
Provides the core MonoidMap data type and functions. |
📦 monoidmap-examples |
Provides worked examples of how to use MonoidMap. |
📦 monoidmap-aeson |
Provides support for JSON encoding with aeson. |
📦 monoidmap-hashable |
Provides support for in-memory hashing with hashable. |
📦 monoidmap-quickcheck |
Provides support for property testing with QuickCheck. |
📦 monoidmap-internal |
Provides low-level internal functions. 🐉 |
| Package | Description |
|---|---|
📦 quickcheck-groups |
QuickCheck support for the groups library. |
📦 quickcheck-monoid-subclasses |
QuickCheck support for the monoid-subclasses library. |
📦 quickcheck-quid |
Quasi-unique identifiers for QuickCheck. |
| Package | Description |
|---|---|
📦 bech32 |
Support for the Bech32 encoding standard. |
📦 haskell-calculator |
Functional reactive calculator with expression visualization. |
📦 haskell-example |
Haskell CI template, ready to fork and go. |
📦 taiwan-id |
Implementation of Taiwan's uniform ID number (中華民國統一證號) format. 🇹🇼 |
If you're interested in collaboration, feel free to reach out to me.
- 💼 LinkedIn: https://www.linkedin.com/in/knowlesjonathan/





