こんにちわ、高校生です。 今回はprotocolを使った話です。 通常の場合 user=> (bit-and "生" "死") IllegalArgumentException bit operation not supported for: class java.lang.String clojure.lang.Numbers.bitOpsCast (Numbers.java:994) bit-andはNumbersしか受け付けない関数なので当たり前のごとくうまくいきません。 異なる型でもいい感じに処理をして欲しい場合にはprotocolで既存関数も拡張ができます。 (defprotocol bit-protocol (bit-and [x y])) (extend-protocol bit-protocol java.lang.String (bit-and [x y] (let [a