World's most popular travel blog for travel bloggers.

[Solved]: ML function of type 'a -> 'b

, , No Comments
Problem Detail: 

Our professor asked us to think of a function in OCaml that has the type

'a -> 'b 

i.e. a function of one argument that could be anything, and that can return a different anything.

I thought of using raise in a function that ignores its argument:

let f x = raise Exit 

But the professor said there was a solution that doesn't require any function in the standard library. I'm confused: how can you make a 'b if you don't have one in the first place?

I'm asking here rather than on Stack Overflow because I want to understand what's going on, I don't want to just see a program with no explanation.

Asked By : Gilles

Answered By : rgrig

The skeleton is let f x = BODY. In BODY you must use x only in generic ways (for example, don't send it to a function that expects integers), and you must return a value of any other type. But how can the latter part be true? The only way to satisfy the statement "for all types 'b, the returned value is a value of type 'b" is to make sure the function does not return. There are exactly two possibilities: either BODY faults or it doesn't terminate. The function raise faults, the following doesn't terminate:

let rec f x = f x 
Best Answer from StackOverflow

Question Source : http://cs.stackexchange.com/questions/302

0 comments:

Post a Comment

Let us know your responses and feedback