Leggere "Pensare in modo funzionale con Haskell" Mi sono imbattuto in una parte di un calcolo del programma che richiedeva la riscrittura di map sum (map (x:) xss)
come map (x+) (map sum xss)
Haskell - Come trasformare la somma della mappa (mappa (x :) xss) per mappare (x +) (somma mappa xss)
Intuitivamente so che ha un senso ...
se si dispone di alcune liste che si sta per sommare, ma, prima di sommare, a quelle stesse liste si stanno anche per aggiungere un elemento 'x ', quindi equivale a prendere una lista di somme delle liste orignali e ad aggiungere il valore di x a ciascuna di esse.
Ma mi piacerebbe sapere come trasformare l'uno nell'altro solo usando il ragionamento equazionale. Mi sento come se mi mancasse una legge o una regola che mi aiuterebbe a capire.
Non sono d'accordo sulla comprensione dell'elenco, ma è certamente una questione di gusti. Perché non usare la definizione di '(.)' E dire 'map (sum. (X :)) xss = map (\ xs -> sum (x: xs)) xss = map (\ xs -> x + sum xs) = ... '? – kosmikus
@kosmikus Eh, gusto personale. In questo caso è piuttosto irrilevante, ma potrei vedere l'argomento per tenere 'map' lì dentro per tutto il tempo. – bheklilr
@kosmikus ha un aspetto migliore? – bheklilr