[Haskell-cafe] HANSEI in Haskell?

Daryoush Mehrtash dmehrtash at gmail.com
Mon Feb 28 02:32:24 CET 2011


I am confused about this comment:


> Mostly we preferred (as do the domain experts we target) to write
>
probabilistic models in direct style rather than monadic
>


In the haskell implementation of the lawn model there are two different
version of the grassModel (
https://github.com/rst76/probability/blob/master/src/Lawn.hs)

grassModel :: PM Bool
grassModel =
  let_ (flip_ 0.3) (\ rain ->
  let_ (flip_ 0.5) (\ sprinkler ->
  let_ (dis (con (flip_ 0.9) rain)
            (dis (con (flip_ 0.8) sprinkler)
                 (flip_ 0.1))) (\ grassIsWet ->
  if_ grassIsWet rain (dist []))))



and

grassModel = do
rain <- flip_ 0.3
sprinkler <- flip_ 0.5
wetInRain <- flip_ 0.9
wetInSprinkler <- flip_ 0.8
wetInOther <- flip_ 0.1
let grassIsWet = rain && wetInRain
|| sprinkler && wetInSprinkler
|| wetInOther
if grassIsWet then return rain else dist []


By domain expert preferring direct style do you mean that they prefer
the first version over the 2nd version?

thanks,

Daryoush



On Wed, Feb 23, 2011 at 7:52 AM, Chung-chieh Shan <ccshan at cs.rutgers.edu>wrote:

> Hello!  Thank you for your interest.
>
> Daryoush Mehrtash <dmehrtash at gmail.com> wrote in haskell-cafe:
> > Is the "Embedded domain-specific language HANSEI for probabilistic models
> > and (nested) inference"  described in:
> > http://okmij.org/ftp/kakuritu/index.html#implementation  available in
> > Haskell?
>
> The closest to that I know of is this one:
>  http://d.hatena.ne.jp/rst76/20100706
>  https://github.com/rst76/probability
>
> Or you can apply this monad transformer to a probability monad:
>  http://sebfisch.github.com/explicit-sharing/
>
> > Is there a reason why the author did the package in Ocaml
> > rather than Haskell?
>
> Mostly we preferred (as do the domain experts we target) to write
> probabilistic models in direct style rather than monadic style.
> Haskell's laziness doesn't help -- in fact, to avoid running out of
> memory, we'd have to defeat that memoization by sprinkling "() ->"
> throughout the types.
>
> --
> Edit this signature at http://www.digitas.harvard.edu/cgi-bin/ken/sig
> 1st graffitiist: QUESTION AUTHORITY!
> 2nd graffitiist: Why?
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>



-- 
Daryoush

Weblog:  http://onfp.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20110227/e98b0782/attachment.htm>


More information about the Haskell-Cafe mailing list