Sto cercando di capire come convertire le funzioni in notazione point-free in Haskell. Ho visto this example, ma è più complicato di quello che sto cercando. Mi sembra di capire la logica dietro, ma quando sto cercando di eseguire alcuni semplici esempi nel codice, sto ricevendo errori di compilazione. Voglio provare e scrivere questa funzione in stile libero-point:simple Haskell funziona in stile point-free
f x = 5 + 8/x
che ho riordinato come f x = (+) 5 $ (/) 8 x
Così, ho pensato che potrebbe essere qualcosa di simile:
f = (+) 5 $ (/) 8
ma quando corro questo in ghci ricevo questo messaggio:
No instance for (Num (a0 -> a0))
arising from the literal `5' at Test.hs:3:9
Possible fix: add an instance declaration for (Num (a0 -> a0))
In the first argument of `(+)', namely `5'
In the first argument of `($)', namely `(+) 5'
In the expression: (+) 5 $ (/) 8
Failed, modules loaded: none.
Non capisco il messaggio "Nessuna istanza per ...". Cosa devo fare per scrivere questa funzione in stile point-free?
Penso che potresti essere confuso riguardo alla [differenza tra gli operatori '$' e' .'] (http://stackoverflow.com/questions/940382/haskell-difference-tra between-dot-and-dollar-sign). – hammar