I figured out the [[Int]] case for myself, but hadn't considered the Failure case. Thanks.
In function "searchAll", given a calling context Failable [Int], for the line where search' [] = failure "no path" "failure" would be "Fail", a constructor that takes a String. Right? But using either of the other two contexts, where failure equals either const Nothing or const [] it would seem like that same string argument "no path" would be passed to either Nothing or [], which doesn't make any sense. Explanation? Michael --- On Sat, 5/30/09, David Menendez <d...@zednenem.com> wrote: From: David Menendez <d...@zednenem.com> Subject: Re: [Haskell-cafe] Missing a "Deriving"? To: "michael rice" <nowg...@yahoo.com> Cc: "Miguel Mitrofanov" <miguelim...@yandex.ru>, haskell-cafe@haskell.org Date: Saturday, May 30, 2009, 9:33 PM On Sat, May 30, 2009 at 9:00 PM, michael rice <nowg...@yahoo.com> wrote: > That works. but it gives just a single solution [1,2,3] when there are > supposed to be two [[1,2,3],[1,4,3]]. Of course the code in YAHT may be in > error. Works for me. *Main> searchAll g 1 3 :: [[Int]] [[1,2,3],[1,4,3]] *Main> searchAll g 1 3 :: Maybe [Int] Just [1,2,3] *Main> searchAll g 1 3 :: Failable [Int] Success [1,2,3] > Also, how the heck does Haskell decide which "success", "failure", > "augment", and "combine" to use in function "searchAll", since there are > five possibilities. *Main> :t searchAll searchAll :: (Computation c) => Graph t t1 -> Int -> Int -> c [Int] The way searchAll is written, the choice of which functions to use depends on the type variable c. That's determined by the calling context of searchAll, which is why you need to provide a type signature when using it at the GHCi command line. -- Dave Menendez <d...@zednenem.com> <http://www.eyrie.org/~zednenem/>
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe