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.
|   | 2 |  retagged  | 
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.
 Copyright students of FIT CTU and others, 2014. Content on this site is licensed under a Creative Commons Attribution-ShareAlike 4.0 International license.
 
                
                Copyright students of FIT CTU and others, 2014. Content on this site is licensed under a Creative Commons Attribution-ShareAlike 4.0 International license.