Próbuję opóźnić różne obliczenia. Mam funkcje poniższego formularza,Argumenty funkcji wiele typów
(defn a-fn [a b]
(let [a (if (fn? a)
a
#(identity a))
b (if (fn? b)
b
#(identity b))]
(+ (a) (b))))
to pozwala mi przejść a-fn wartość lub funkcja, która zwraca wartość,
(a-fn 1 2)
(defn x [] 1)
(defn y [] 2)
(a-fn x y)
(a-fn x 2)
co mogę zrobić, to zbudować listę funkcji (jak ten powyżej) do operowania na niektórych danych, fns mogą używać innych fns do pobierania swoich argumentów lub w niektórych przypadkach rzeczy się nie zmieniają i są one przypisywane wartościom jako argumenty. Zastanawiam się, czy istnieje lepszy sposób na osiągnięcie tego rodzaju zachowania?
Nice. Zapomniałem o opóźnieniu/sile. –