Clojure 初心者がチュートリアルをやって、やらかしたイージーミス

2021-09-08

Clojureのチュートリアルをいろいろやっています。

戒めの為に、イージーミスを記録します。

キーワードを使ったマップからの値取得を、マップの定義と勘違い

(:params request)
;;という処理を
{:params request}
;;と書いていました。

最初に「->」がついている関数名を、スレッディングマクロと勘違い

(->kebab 
;;という関数の呼び出しを、
(-> kebab
;;と、勘違いしてました。

まぎらわしいと思うんですが、このライブラリ以外でもこういう関数名はあるようなので、慣れていきます。

curlコマンドでダブルクォートのエスケープ忘れ

Clojureに直接関係はないけど。windows上、curlコマンドでjsonのPOSTをするとき、ダブルクォートのエスケープをせずにエラー。

#↓エラー発生
# clojure.lang.ExceptionInfo: Malformed application/json request.
curl -X POST -H "Content-Type: application/json" -d '{"name":"kero"}' localhost:3000//users


#エスケープが必要
curl -X POST -H "Content-Type: application/json" -d '{\"name\":\"kero\"}' localhost:3000//users

今は、HTTPieを使っています。