tengo la siguiente función en Haskell:¿Hay alguna forma de memorizar un valor en Haskell?
memdb = -- load the contents of a database into memory as a Map
Y luego tengo la siguiente línea:
map (\x -> memdb ! x) values
me gustaría MemDB para generar el mapa sólo una vez, en lugar de en cada iteración de map
. Podría hacerlo usando algo como esto:
make_memdb = -- equivalent to memdb in previous example
memdb <- make_memdb
map (\x -> memdb ! x) values
Pero esto significaría que tendría que pasar en memdb
a todas las funciones que lo utiliza. ¿Hay alguna manera que pueda:
a. evitar volver a calcular memdb
cada vez que se llama O
b. Guarde el valor producido en make_memdb
como constante, así que puedo evitar pasarlo a cada función que lo use.
posible duplicado de [¿Cómo se crea una función memoize genérico Haskell] (http://stackoverflow.com/questions/141650/how-do-you-make-a-generic-memoize-function-in-haskell) –
@Craig Stuntz:? había leído a través de esa cuestión antes de publicar el mío ¿Cómo me ayudarían esas respuestas a lograr a. o b. ? –
@Craig: A pesar del título, esta cuestión no es realmente acerca de memoization en el sentido habitual del término. No es un duplicado de esa pregunta. – hammar