Привет всем У меня есть этот фрагмент кода:ошибка в SML из Нью-Джерси
local
fun NTimesF(f, n:int) =
if n = 1 then fn (x) => f(x)
else fn (x) => f(NTimesF(f, n - 1)(x))
in
fun compList f n = if n = 0 then []
else (NTimesF(f, n)) :: (compList f n-1)
end;
Мне нужно написать программу, которая получает некоторую функцию ф и число п и произвести список функций, таких как [f1, f2, ... fn] <- fn is the composition of the function n times
, но каждый раз, когда Я получаю сообщение об ошибке:
- stdIn:7.11-7.46 Error: operator and operand don't agree [literal]
operator domain: ('Z -> 'Z) * ('Z -> 'Z) list
operand: ('Z -> 'Z) * int
in expression:
NTimesF (f,n) :: (compList f) n - 1
stdIn:6.6-7.46 Error: right-hand-side of clause doesn't agree with function result type [literal]
expression: int -> _ list
result type: int -> int
in declaration:
compList = (fn arg => (fn <pat> => <exp>))
-
может кто-то пожалуйста, помогите мне, спасибо заранее
Большое спасибо, как вы это заметили? Познакомиться с ML? – rookie 2010-11-28 12:28:35