タグ

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

  • Clojureの長めのマクロを読む - Qiita

    動機 Lispといえばマクロというくらい、Lispとマクロは関連が深いです。 なのですが、自分は簡単なマクロなら自分で書けるものの、長いマクロや複雑なマクロをあまり書いたことがありません。 そろそろ次の1歩に進んでもいい頃合いかなと思うのですが、じゃぁどうするというところが思いつきません。 それなら公式の長めのマクロを読むことで色んなヒントを得ればいいじゃない、ということで読もうと思いました。 言語はClojureで、読むマクロはclojure.coreから長いものを適当に選ぶことにします。 長いマクロベスト4 case defmulti fn doseq(for) 定量的に図ったわけではないですが、ほぼ間違いないと思います。おそらく、Clojureに触ったことがある人であれば、大体わかるのではないでしょうか。 コードリーディング ソースコードはGit Hubより引用します。変更される可能

    Clojureの長めのマクロを読む - Qiita
  • Clojureのクォート - Qiita

    動機 先日、Clojureの長めのマクロを読むという記事を書いたのですが、自分でもびっくりするほど展開時のコードとコンパイル時のコードを区別できていませんでした。 次は何をしようかなーと考えてはいたものの、さすがにもう少しマクロについて理解せずに先に進むわけにもいかないので再度勉強し直すことにしました。 自分が理解していないのはマクロの中でもクォートだと思ったので、今回はクォートに絞って理解を勧めます。 何番煎じかわかりませんが、自分なりの表現でまとめてみます。 '(クォート)の特性 基的にクォートされた値は評価されません。例を見たほうが早いでしょうか。 '(シングルクォーテーション)はquoteと同じ意味で、実行時に展開されるリーダマクロと呼ばれるものです。 ※追記 コメントで指摘いただきましたが、リーダマクロが展開されるのは実行時ではなくリード時でした。 ;; 下記は(quote (

    Clojureのクォート - Qiita
  • メタ・テスト - Qiita

    前書き 以前に書いた記事の中でforとdoseqがまとめてテストされているということに触れました。 個人的にはそのテストの方法が驚きで、Clojureのテストについての考えは自分になじみのないものでした。 もう少し具体的に表現するのなら、「テストが柔らかい」と感じたのです。「テストライブラリは素材で自由にいじってもいい」といういい方もできるのでしょうか。 その命題が真であるならば、Clojureのテストの方法はきっと驚きに満ちているだろう、というのが今回の記事のモチベーションです。 具体的にはClojureのリポジトリの中から、テストに関するヘルパー関数、マクロを適当に拾い上げて、分類・解説を加えていきます。 clojure.testの主となる関数やマクロについては特に触れません。今回の興味は材料をどう調理するかであって、材料そのものではないからです。 といいながら、材料それ自体と関係ない

    メタ・テスト - Qiita
  • 1