Compare commits

...

2 Commits

Author SHA1 Message Date
Mats Rauhala 96f76a7751 Add zettelkast project 2021-01-25 22:03:32 +02:00
Mats Rauhala a0640e1c0a Add bidirectional project 2021-01-25 22:03:20 +02:00
2 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,37 @@
---
title: bidirectional
github: https://github.com/MasseR/bidirectional
issues: https://github.com/MasseR/bidirectional/issues
badge: https://github.com/MasseR/bidirectional/workflows/Test/badge.svg
---
Bidirectional serialization based on Lysxia's post on [Monadic profunctors for bidirectional programming](https://blog.poisson.chat/posts/2017-01-01-monadic-profunctors.html).
Let's assume we have a parser like the following
``` haskell
int :: Parser (ReaderT String Maybe) (Writer [Int]) Int Int
int = parser (ReaderT readMaybe) (\x -> x <$ tell [show x])
```
Then you can use the parser for parsing:
```
> runReaderT (decode int) "3"
Just 3
```
Or for encoding:
```
> execWriter (encode int 3)
["3"]
```
Or combine both of them
```
> runReaderT (decode int) $ head $ execWriter $ encode int 3
Just 3
```

View File

@ -0,0 +1,17 @@
---
title: zettelkast
github: https://github.com/MasseR/zettelkast
issues: https://github.com/MasseR/zettelkast/issues
badge: https://github.com/MasseR/zettelkast/workflows/Test/badge.svg
---
Command-line tool for managing zettelkast documents. The tool primarily focuses
on providing unique ids and showing a graph of document connections. It tries
to be as unintrusive as possible.
```
$ zettelkast help
$ zettelkast new
$ zettelkast list
$ zettelkast open <id>
```