ApplicativeDo拡張を試す

ApplicativeDoの動作を実際に動かして見てみたいと思いました。 解説は以下などで行われています。 どのようにdesugarされるかもわかります。 https://gitlab.haskell.org/ghc/ghc/-/wikis/applicative-do https://qiita.com/thimura/items/120f40c4e49f9154ac8a <*>と>>=で挙動が違う適当な型を用意して、 {-# LANGUAGE ApplicativeDo #-} import »

HRRで主キー、外部キーごとに新しく型を割り当ててみた(雑)

HRRで型安全なクエリをかけるので大満足生活だが、主キー・外部キーがすべて同じ型(Int64等)になってしまっている状況では注意力が必要だと感じた。 どのカラムも型割り当ててもよいのだが、特に次の理由で、 query作成時に指定することが多いはずなため 関連していないidは比較できないと考えて良かったため 前置き 雑なコード生成で殴ってます。 コード生成良くないが、hrr使ってる関連では既にTableごとのモジュールのコード生成を行ってたので、考えることをやめた。 実装内容 shell scriptでpostgresのinformation_schemaへの問い合わせを使い次のようなコードを生成した。 PKごとにnewtypeを定義を生成 カラムごとに型を割り当てるため、getFieldsWithMapの挙動の一部を上書きする関数を生成 pkごとにnewtype生成する例.sh query=$(cat < »

slack-api + bloodhound + servant でbot+αを作る

Haskell (その2) Advent Calendar 2017 (7日目)の記事です。 Advent Calendarのネタ探しに何か作ろうと思った。 slack上のQA形式の知見を手動でまとめていき、後から参照しやすくするbotを作りたいと思った。 (リリースまで行けなかった。次の休みには公開してリンク貼ります。。無念 ) => 追記2017-12-29: 作ったやつ => https://slacknowledge.pig-brewing.com/ 特にすごいことはなく普通にサービスを作ってしまったので、使ったライブラリとその使い方などを紹介したいと思います。 主なやったことは次の3点: slack botを作る »

HaskellでSESを使って添付ファイル付メールを送る

SESでのメール送信に関連するライブラリの紹介記事です。 SESで添付ファイル付メールを送るにはSendRawEmailアクションを使用する。この時メールのフォーマットを組み立てる必要が有るため、自力で全部やるのは厳しい。 次のライブラリを使用した。 amazonka-ses, amazonka 包括的なAWSのSDK。その内のSESに対するアクション。 mime-mail MIMEを扱うためのライブラリ。これを使いSendRawEmailに送るメールのデータを作成する。 heterocephalus 型安全なテンプレートエンジン。本題からはそれるが、メール本文の作成に使用。 mime-mail Mail 型の値を組み立てて、renderMailでByteStringを作成(renderMail'でboundaryランダム生成)。 Mailの組み立てに幾つかの便利関数が用意されている。 {-# LANGUAGE OverloadedStrings #-} »