タグ

ブックマーク / qiita.com/yasuabe2613 (3)

  • 現在時刻が関わるコードを関数型で書いてテスタビリティを見てみた - Qiita

    最近、現在時刻が関わるプログラムを題材に、高テスタビリティなプログラミング作法を解説した素晴らしい記事が復刻されて、感想などがTLに流れてきたので、自分もそのお題を関数型プログラミングで解いてみた記事。 はじめに 最近、こんな引用ツイートをした。 関数型界隈だと、参照透過な部分とそうでない部分(現在時刻, 乱数, etc.)を分離しといて使うところで合成する作法が尊重されてて、simplicity と composability の結果として、テスタビリティや柔軟性が高くなる(低くならない)ということがよく謳われている。あとで自分もFPでお題解いてみよう。 https://t.co/00TwqXmtC7 — yasuabe (@yasuabe2613) September 30, 2019 元記事は、t-wadaさんの『現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ 』で、めち

    現在時刻が関わるコードを関数型で書いてテスタビリティを見てみた - Qiita
  • Slack の スラッシュコマンドを Lambda 上の Haskell で書いてみる - Qiita

    Slack のスラッシュコマンドを、API Gateway を介した Lambda 上の Haskell プログラムとして実装するやりかた。 動機 使えるところからちょっとずつ使って、Haskell とか関数型プログラミングとかの適用範囲をじわじわ広げていきたい。 お題 /f-to-c [文字列] と入力すると、文字列部分を華氏温度と解釈して、それを摂氏に変換した数値を返すスラッシュコマンドを定義してみる。[文字列]を指定していなかったり、数値に解釈できないものが入っていたりすると、エラーメッセージが返るようにもする。 実務上の応用としては、例えば、プログラマなら手元の REPL 上でのちょっとした計算や採番で導出できる ID などを、非プログラマのチームメンバーでも Slack で簡単なコマンドを叩けば必要な結果が得られるような簡単な ChatOps がある。もちろん頑張れば外部システム

    Slack の スラッシュコマンドを Lambda 上の Haskell で書いてみる - Qiita
  • Aecor による純粋関数型イベントソーシング - Qiita

    Aecor という純粋関数型 Event Sourcing ライブラリをざっくり紹介したい。 概要 Aecor は Denis Mikhaylov というロシア技術者が開発した、Scala の純粋関数型イベントソーシングライブラリ。作者が勤務するオンライン予約会社の Evotor 社では、Arcorベースの数十のサービスが実運用されているという。 ラテン語で海の意味で、あえて五十音で近似すると、ラテン語読みだとアエコル、英語読みだとエイカーみたいな感じ。 純粋関数型DDD に親和性が高い。OOP とは逆に、FP ではデータと振る舞いを分離することが基となるが1、この辺りは関数型 DDDでも同様。分離の仕方にはいくつかあるが2 3、Aecor 流では Tagless Final で実現する。 Typelevel エコシステムのライブラリ、Cats, Cats Effect, FS2 など

    Aecor による純粋関数型イベントソーシング - Qiita
  • 1