* Variant type with 'a type?
@ 2008-06-10 2:29 Robert Fischer
2008-06-10 2:32 ` [Caml-list] " Robert Fischer
2008-06-10 12:01 ` Brian Hurt
0 siblings, 2 replies; 3+ messages in thread
From: Robert Fischer @ 2008-06-10 2:29 UTC (permalink / raw)
To: caml-list
Is it possible to do a variant type along the lines of "type try = Result of 'a | Exception of exn"?
When I try that, I get an error saying "Unbound type parameter 'a".
~~ Robert.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Caml-list] Variant type with 'a type?
2008-06-10 2:29 Variant type with 'a type? Robert Fischer
@ 2008-06-10 2:32 ` Robert Fischer
2008-06-10 12:01 ` Brian Hurt
1 sibling, 0 replies; 3+ messages in thread
From: Robert Fischer @ 2008-06-10 2:32 UTC (permalink / raw)
To: caml-list
Figured it out -- "type 'a maybe = Result of 'a | Exception of exn"
Putting the tick-a before the "maybe" was nonintuitive to me.
~~ Robert.
Robert Fischer wrote:
> Is it possible to do a variant type along the lines of "type try = Result of 'a | Exception of exn"?
> When I try that, I get an error saying "Unbound type parameter 'a".
>
> ~~ Robert.
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Caml-list] Variant type with 'a type?
2008-06-10 2:29 Variant type with 'a type? Robert Fischer
2008-06-10 2:32 ` [Caml-list] " Robert Fischer
@ 2008-06-10 12:01 ` Brian Hurt
1 sibling, 0 replies; 3+ messages in thread
From: Brian Hurt @ 2008-06-10 12:01 UTC (permalink / raw)
To: Robert Fischer; +Cc: caml-list
On Mon, 9 Jun 2008, Robert Fischer wrote:
> Is it possible to do a variant type along the lines of "type try = Result of 'a | Exception of exn"?
> When I try that, I get an error saying "Unbound type parameter 'a".
1) try is a key
2) paramaterize the type.
so you can do:
type 'a try_t =
| Result of 'a
| Exception of exn
And while you're digging at this spot, let me point out that you might
want to define the module like this:
module Try = struct
let bind m f =
match m with
| Exception e -> Exception e
| Result x ->
try
f x
with
| e -> Exception e
;;
let ( >>= ) m f = bind m f;;
let return x = Result x;;
let fail s = Exception (Failure s)
end;;
Welcome to the wonderful world of monads.
Brian
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-06-10 11:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-10 2:29 Variant type with 'a type? Robert Fischer
2008-06-10 2:32 ` [Caml-list] " Robert Fischer
2008-06-10 12:01 ` Brian Hurt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox