Le problème est le suivant:Comment cette liste infinie est-elle calculée?
Définir un dollar variables Haskell qui est la liste infinie des montants d'argent que vous avez chaque année, en supposant que commencer avec 100 $ et obtenez payé 5% d'intérêt, composé annuellement. (Ignorer l'inflation, la déflation, les renflouements, la possibilité d'un effondrement économique total et d'autres détails de ce genre.) Donc, les dollars devraient être égaux à: [100.0, 105.0, 110.25, ...].
Ma solution est la suivante et il fonctionne:
dollars::[Double]
dollars = 100.0 : [1.05 * x | x<- dollars ]
Le problème est que j'ai du mal à comprendre la façon dont la liste est calculée en pratique:
dollars= 100.0 : [1.05 * x | x<- dollars ]
= 100.0 : [1.05 * x | x<- 100.0 : [1.05 * x | x<- dollars ] ]
= 100.0 : (1.05 * 100.0) : [1.05 * x | x<- [1.05 * x | x<- dollars ] ]
= 100.0 : 105.0 : [1.05 * x | x<- [1.05 * x | x<- dollars ] ]
= 100.0 : 105.0 : [1.05 * x | x<- [1.05 * x | x<- 100.0 : [1.05 * x | x<- dollars ] ] ]
= 100.0 : 105.0 : [1.05 * x | x<- 105.0:[1.05 * x | x<-[1.05 * x | x<- dollars ] ] ]
= 100.0 : 105.0 : 110.25 :[1.05 * x | x<-[1.05 * x | x<-[1.05 * x | x<- dollars ] ] ]
etc.
Est-ce ainsi que c'est calculé? Si non alors comment? Si oui, existe-t-il un moyen plus simple de conceptualiser ces types de calculs?