Rispondendo a questo question, mi sono reso conto che Haskell
consente di decostruire l'oggetto quando si dichiara la funzione e utilizzarlo per eseguire definizioni di funzioni parallele.La dichiarazione parallela di funzione è una buona idea?
In sostanza, immaginiamo mi piacerebbe fare qualcosa di simile
a = (1+)
b = (2+)
c = (3+)
d = (4+)
e = (5+)
Quale sarebbe il modo più secco di scriverlo? Voglio dire, dopo tutto il modello è lo stesso: il nome della funzione non può essere indovinato né l'ammontare da aggiungere, ma dovrei essere in grado di evitare di scrivere ogni volta +
(senza usare Template Haskell ovviamente).
Fondamentalmente, mi piacerebbe essere in grado di utilizzare map
o qualcosa di simile e sembra che map
funziona solo !.
[a,b,c,d,e] = map (+) [1..5]
Et voilà!
Questo è molto più breve e forse più espressivo, e funziona:
> a 10
11
> b 10
12
etc ...
Quindi la mia domanda è, è un buon modello da utilizzare (in questo tipo di situazione) e se non, che sono il sorteggio back (lo so acquistare esperienza che l'equivalente in Ruby è un incubo, ma le ragioni non sembra applicarsi con Haskell)?
Aggiornamento
Capisco la leggibilità di tale codice è soggettiva e può essere visto come base-opinione. Tuttavia, potrebbero esserci alcune ragioni obiettive per non farlo. Ad esempio, in Ruby (almeno 1.8), i metodi definiti utilizzando define_method
non sono visibili per la maggior parte degli sviluppatori di IDE e tag. Inoltre, non è possibile intervenire con il debugger ecc., Cosa che li rende davvero scomodi nella pratica. Sto chiedendo motivo simile in Haskell
Questa domanda sta attirando voti ravvicinati "principalmente basati sull'opinione pubblica" - anche se penso che ci sia un grado di soggettività nella domanda, è ancora capace di una risposta ragionevolmente obiettiva e dovrebbe essere lasciata aperta. –