Ho giocato un po 'con Haskell, compreso esercitarsi a scrivere in forma senza punti. Ecco una funzione di esempio:Perché la versione pointfree di questa funzione è simile a questa?
dotProduct :: (Num a) => [a] -> [a] -> a
dotProduct xs ys = sum (zipWith (*) xs ys)
Vorrei scrivere questa funzione in forma senza punti. Ecco un esempio che ho trovato altrove:
dotProduct = (sum .) . zipWith (*)
Tuttavia, non capisco il motivo per cui la forma libera-punto sembra (sum .) . zipWith (*)
invece di sum . zipWith (*)
. Perché la somma è tra parentesi e ha 2 operatori di composizione?
Il '*' in questa parte 'f * g == (f *) g' è uguale alla composizione della funzione' .'? – guhou
@Bleu: Sì. Qualsiasi operatore binario farà. – kennytm