@@ -39,9 +39,33 @@ mulSSM3 = fromF' (mulSS (Nat 3))
3939die :: Dist (Natural 6) 6
4040die = uniform [nat @6 1 .. nat 6]
4141
42+-- Sprinkler
43+
44+rain :: Dist Bool 2
45+rain = choose 0.8
46+
47+sprinkler :: Matrix Double 2 2
48+sprinkler = fromLists [[0.6, 0.99], [0.4, 0.01]]
49+
50+grass :: Matrix Double 4 2
51+grass = fromLists [[1, 0.2, 0.1, 0.01], [0, 0.8, 0.9, 0.99]]
52+
53+state = khatri grass identity `comp` khatri sprinkler identity `comp` rain
54+
55+grass_wet = row [0,1] `comp` kp1 @Double @2 @4
56+
57+rainning = row [0,1] `comp` kp2 @Double @2 @2 `comp` kp2 @Double @2 @4
58+
4259main :: IO ()
4360main = do
61+ putStrLn "Monty Hall Problem solution:"
4462 prettyPrint (p1 @Double @1 `comp` secondChoice `comp` firstChoice)
63+ putStrLn "\n Sum of dices probability:"
4564 prettyPrint (sumSSM `comp` khatri die die)
65+ putStrLn "\n Checking that the last result is indeed a distribution: "
4666 prettyPrint (bang `comp` sumSSM `comp` khatri die die)
67+ putStrLn "\n Probability of grass being wet:"
68+ prettyPrint (grass_wet `comp` state)
69+ putStrLn "\n Probability of rain:"
70+ prettyPrint (rainning `comp` state)
4771