data List = Nil | Cons (Symbol, List) guard(weather) = if (weather == 'sun) then dist [ 0.8 : 'u , 0.2 : 'nu] else dist [ 0.3 : 'u , 0.7 : 'n] multiguard2(x,weather) : (Int,Symbol) ->List= if x==0 then Nil else let xp = x-1 in let val = guard(weather) in Cons(val,multiguard2(xp,weather)) multiguard(weather) : (Symbol) -> List = multiguard2(3,weather) trans(prev,nrguards) = let x = case prev of #'rain : dist [0.7: 'rain , 0.3:'sun] #'sun : dist [0.6: 'rain , 0.4: 'sun] in type Chain = walk(nrguards) : (Int) -> Chain = let state = 'rain in let obse : List = multiguard2(nrguards,state) in