At the heart of functional programming rests the principle of referential transparency, which in particular means that a function f applied to a value x always yields one and the same value y=f(x). This principle seems to be violated when contemplating the use of functions to describe probabilistic events, such as rolling a die: It is not clear at all what exactly the outcome will be, and neither is it guaranteed that the same value will be produced repeatedly. However, these two seemingly incompatible notions can be reconciled if probabilistic values are encapsulated in a data type.
%0 Journal Article
%1 citeulike:3141951
%A Erwig, Martin
%A Kollmansberger, Steve
%C New York, NY, USA
%D 2006
%I Cambridge University Press
%J J. Funct. Program.
%K functional-programming haskell
%N 1
%P 21--34
%R 10.1017/s0956796805005721
%T FUNCTIONAL PEARLS: Probabilistic Functional Programming in Haskell
%U http://dx.doi.org/10.1017/s0956796805005721
%V 16
%X At the heart of functional programming rests the principle of referential transparency, which in particular means that a function f applied to a value x always yields one and the same value y=f(x). This principle seems to be violated when contemplating the use of functions to describe probabilistic events, such as rolling a die: It is not clear at all what exactly the outcome will be, and neither is it guaranteed that the same value will be produced repeatedly. However, these two seemingly incompatible notions can be reconciled if probabilistic values are encapsulated in a data type.
@article{citeulike:3141951,
abstract = {{At the heart of functional programming rests the principle of referential transparency, which in particular means that a function f applied to a value x always yields one and the same value y=f(x). This principle seems to be violated when contemplating the use of functions to describe probabilistic events, such as rolling a die: It is not clear at all what exactly the outcome will be, and neither is it guaranteed that the same value will be produced repeatedly. However, these two seemingly incompatible notions can be reconciled if probabilistic values are encapsulated in a data type.}},
added-at = {2019-06-18T20:47:03.000+0200},
address = {New York, NY, USA},
author = {Erwig, Martin and Kollmansberger, Steve},
biburl = {https://www.bibsonomy.org/bibtex/252ed8049a386b36776a30c9bba0c3ce5/alexv},
citeulike-article-id = {3141951},
citeulike-attachment-1 = {erwig_06_functional_1127271.pdf; /pdf/user/alexv/article/3141951/1127271/erwig_06_functional_1127271.pdf; 9d977e52ca6e3d0e24229315a522c4eddd55c4ca},
citeulike-linkout-0 = {http://portal.acm.org/citation.cfm?id=1114008.1114013},
citeulike-linkout-1 = {http://journals.cambridge.org/action/displayAbstract?fromPage=online\&aid=358592},
citeulike-linkout-2 = {http://dx.doi.org/10.1017/s0956796805005721},
doi = {10.1017/s0956796805005721},
file = {erwig_06_functional_1127271.pdf},
interhash = {3ffefdd43ba70d05bab66fe24c4300d9},
intrahash = {52ed8049a386b36776a30c9bba0c3ce5},
issn = {0956-7968},
journal = {J. Funct. Program.},
keywords = {functional-programming haskell},
month = jan,
number = 1,
pages = {21--34},
posted-at = {2017-04-27 04:22:58},
priority = {2},
publisher = {Cambridge University Press},
timestamp = {2019-08-24T00:12:31.000+0200},
title = {{FUNCTIONAL PEARLS: Probabilistic Functional Programming in Haskell}},
url = {http://dx.doi.org/10.1017/s0956796805005721},
volume = 16,
year = 2006
}