English 中文(简体)
Standard ml function in datatype problem
原标题:
  • 时间:2010-02-05 12:32:36
  •  标签:
  • sml
  • ml

I have to create a function about peano numbers defined as the following datatype:

datatype  a peano = P of ( a ->  a) *  a ->  a
val zero = P(fn (f, x) => x)

The function that I have to implement finds the succesive peano number of the peano parameter P(p). This is what I have written:

fun suc (P(p)) = case P(p) of P(fn(f,x)=>x) => P(fn(f,x)=>f(x));

The problem is that i get these errors:

stdIn:4.33-4.36 Error: syntax error: deleting FN LPAREN
stdIn:4.43 Error: syntax error found at RPAREN

I don t know what Im doing wrong. Please help!

问题回答

There are a number of problems in this code. The one the compiler is whining about is that you have a function definition

fn (f,x) => x

on the left-hand side of a case arm, where only patterns are permitted.

Some other problems:

  1. Redundant parentheses make the code hard to read (advice is available on removing them).
  2. Your case expression is redundant; in the function definition

     fun suc (P p) = ...
    

    it should be possible just to compute with p without any more case analysis.

  3. Since P carries a function, you will probably have an easier time if you write

     fun suc (P f) = ...
    

    and make sure that in the result, f is applied to a pair (as required by the datatype declarations).





相关问题
Standard ml function in datatype problem

I have to create a function about peano numbers defined as the following datatype: datatype a peano = P of ( a -> a) * a -> a val zero = P(fn (f, x) => x) The function that I have to ...

convert string to list in Standard ML [duplicate]

Possible Duplicate: Open file in ML(SMLNJ) I have a string value which has value like this: "[(1,2,3),(2,3),(6,8)]" -> string but I want to have these values in int type like this: [(1,2,3),...

Open file in ML(SMLNJ)

I need to read file in ML (SLMNJ) and save it in some structures. I need to read some data that points to graph declaration: [( 1 , 2 , 13 ),( 2 , 3 , 3 ),( 2 , 4 , 8 ),( 2 , 5 , 4 ),( 3 , 1 , 5 ),( ...

Line Comments in Standard ML

I m learning ML, with the SML/NJ dialect. What I m trying to figure out is if there is a line comment operator. I found the block comment operator, (* ... *), but I really miss line comments. ...

How to fix the SML/NJ interactive system to use Arrow Keys

I m having some trouble using SML/NJ interactive system, namely, that when I try to use my arrow keys (either left or right to make a correction in the expression I ve typed, up to repeat the last ...

What causes this Standard-ML type error?

I was trying to make a tail-recursive version of this very simple SML function: fun suffixes [] = [[]] | suffixes (x::xs) = (x::xs) :: suffixes xs; During the course of this, I was using type ...

热门标签