1

실제 값 목록으로 만든 다항식의 x 값을 계산하는 함수를 작성했습니다.카 트리 함수 (SML)를 반환하는 함수 만들기

infixr 5 ^^; 

fun (x:real) ^^ 0 = 1.0 
    | (x:real) ^^ n = x*(x^^(n-1)); 

fun poly [] (x:real) = 0.0 
    | poly (hd::tl) (x:real) = hd*(x^^(length tl)) + poly tl x; 

이 코드는 모두 정상적으로 동작하며, 매우 자랑 스럽습니다. mathetmatical 기능 만들기

> fun f x = poly [3.0,2.0,1.0] x; 
val f = fn : real -> real 

> f 2.0; 
val it = 17.0 : real 

:

나는 부분 응용 프로그램을 사용하여 다항식 함수를 만들 관리해야이 모든 괜찮 f(x) = 3*x^2 + 2*x + 1

을,하지만 난이 방법으로 함수를 구성 할 수 있도록하려면 :

fun f x = polyGen [1.0,2.0,3.0]; 

그리고 위와 동일한 기능을 제공합니다. 이것이 가능합니까? 나는 그것이 평범한 것처럼 보인다는 것을 알기 때문에, 나는 전에했던 것처럼 x를 그곳에 놓을 수 있었고, 내 삶과 함께 할 수있었습니다. 하지만 누군가가이 문제를 어떻게 해결할 지 궁금합니다. 사전에

감사 인 Ciaran

편집 :

fun polyGen L = let fun poly [] x = 0.0 
         | poly (hd::tl) x = hd + x*(poly tl x); 
       in fn x => poly L x end; 

사랑스러운!

답변

3

귀하의 질문을 올바르게 이해하면 다른 어떤 것도 정의 할 필요가 없습니다. 기능 poly으로 당신은 당신은 이미 형 real -> real의 함수로 f을 정의

val f = poly [3.0, 2.0, 1.0] 

을 할 수 있습니다.