でもTemplate Haskellだとコンパイル時になってしまうから、実行時はさすがにないはず...
ts
をaesonでパースしたいのですが、インスタンスを定義したいんですがエラーがでます。どんな対応がありますか?{ "type": "message", "user": "U061F7AUR", "text": "What, you want to smell my shoes better?", "ts": "1512104434.000490" }
/Users/sho/src/github.com/shokohara/automerge/slackworkcount/src/Main.hs:30:10: error: Duplicate instance declarations: instance FromJSON LocalTime -- Defined at src/Main.hs:30:10 instance FromJSON LocalTime -- Defined in ‘aeson-1.4.2.0:Data.Aeson.Types.FromJSON’ | 30 | instance FromJSON LocalTime where | ^^^^^^^^^^^^^^^^^^
LocalTime
の FromJSON
インスタンスが二個定義されているといってますnewtype
宣言で LocalTime
をラップした型を定義して、それを使う方法ですかね…(Ord a) =>
の部分と、引数および返値を表す a -> a-> Bool
の部分に分かれています。a
を2つ取る必要があります。(Ord a, b) => a -> b -> Bool
のように定義してしまうと、例えば a
が Int
、 b
が String
のようなものを比較可能になってしまいますよね。これを (Ord a) -> a -> a -> Bool
と定義することで、片方の型を入力するともう片方の型を自動的に固定して、同じ型でなければ比較できないという制約を作り出すことができるのです。Left (SlackError "invalid_ts_latest")
という実行時エラーがでるようになり、この通信をデバッグしたいのですが、どのようにするのが良さそうでしょうか?(Java,Scalaだとlogback.xmlなどを書き換えたりしますが、、、)LocalTime
をJSONに変換した結果の文字列が、Slackが受け付ける文字列になっていないというエラーかと。f :: a -> b
と、その関数に渡す引数 x :: a
と取って関数適用した値 f x :: b
を返すと読めます。a と b は同じ型でも問題ありません。たとえば f
として id
を渡す場合などです。M-.
によって Jump to definition したいのですが、instance ToForm HistoryReq where
の ToForm
の定義に飛ぼうとすると http-api-data-0.3.8.1-CLVb2SyagwA9bGtbONTDYI:Web.Internal.FormUrlEncoded
のように表示されます。この挙動は intero では当然のものでしょうか?自分を評価してくれる
変に浮世離れしたイメージを持たれがちなHaskellのユーザはどんなモチベーションでプログラミングに取り組んでいるのかというのは、回答を募る意味があると思う。もし本当にそういう意図があっての質問だったのであれば、そう明言していれば私も特に注意はしなかったと思います。