Lze v lispu z funkce se 2 parametry udělat funkci s jedním?
Mám matici:
(setq mat '((1 2 3) (0 5 0) (7 8 9)))
A funkci na vrácení řádku matice:
(defun radek (i m)
(if (eq i 1)
(car m)
(radek (1- i) (cdr m))
)
)
Jde udělat něco, abych zafixoval hodnotu i
a vrátila se mi funkce s jedním parametrem? Vím, že nám nedávno Daněček na Scale tohle povídal, že jde a přišlo mi to docela logický u funkcionálního programování. Jde vlastně o aplikaci (substituci) jen toho jednoho parametru.
Hodilo by se to třeba v případě, že chci udělat sloupec matice pomocí mapcar:
(defun sloupec (j m)
(mapcar 'fixniRadek m) ; kde fixniRadek je fce odvozena z funkce radek
)
Vím, že bych si mohl napsat vlastní funkci s jedním parametrem (i - řádek) která mi vrátí funkci s jedním parametrem (m - matice) a tu volat. Ale chci právě vědět jestli pro to existuje nějaká automatická funkce/makro, která to udělá pro každou funkci. Díky.