2022-01-01から1年間の記事一覧
レコードデータ型の一部のフィールドだけテストする方法について、以前から少し悩んでいた。 data Person = Person { id :: Int , name :: Text , age :: Int } deriving (Eq, Ord, Show) registerPerson :: Text -> Int -> IO Person これをテストするため…
コードフォーマット 最近はGo言語を書く機会もあり、そこでgo fmtいいなと思ったので、Haskellでもコードフォーマッタを導入することにした。 とりあえずstylish-haskellを使うことにした。Emacsで使うので、設定ファイルは自分のEmacs設定レポジトリに入れ…
久々にそこそこのボリュームのHaskellプログラム(OpenID Connect認証つきの簡単なWebアプリ)を書いて学んだことの第2回。 ライブラリ 今回使った外部ライブラリについて。 Web application Web application frameworkとしてはservant-serverを使った。servan…
最近、久々にそこそこのボリュームのHaskellプログラムを書いた。ぶっちゃけ簡単なWebアプリだが、OAuth2(というかOpenID Connect)によるログイン機能を盛り込み、バックグラウンドでAWSのサービスをいくつか扱う。 その開発でいろいろと思うところ、学んだ…
cache: An in-memory key/value store with expiration support cacheはシンプルなin-memory key-value store. 内部実装としてHashMapを使っており、IOやSTMモナドによるinsert, lookupが可能。また、オプションでexpiration timeをセットすることもできる。…
ここ最近、ちょっとHaskellを書く機会があり、Haskellにおける伝統的な課題「レコードフィールド名が広めの名前空間に飛び出るので衝突しまくる問題」をなんとかできないか考えている。 参考: 新しいGHC拡張、NoFieldSelectorsについて - モナドとわたしとコ…