単純なDiceRollerアプリケーションを作成し、プライマリ関数を作成しましたが、分岐条件を使用して入力を検証するのではなく、Clojureで関数入力を検証する「スマート」な方法があるかどうか疑問に思っています。私の関数は以下のサンプルテストであり、nが別のifまたはorまたはの数ではないかどうかもテストする必要があり、それが乱雑に感じられます。
また、誰かがこの機能を実行するためのよりスマートな方法を指摘できる場合は、フィードバックをいただければ幸いです。これは、機能的にプログラムすることを試みる最初の試みです。
(ns DiceRoller)
(defn roll
"rolls a specified number of n sided dice "
([] (roll 1 6))
([number] (roll number 6))
([number n]
(if-not number? number (throw (IllegalArgumentException. (str "incorrect input, integers only"))))
(take number (repeatedly #(+ (rand-int n) 1)))
)
)