2017-10-07 14 views
1

SML 함수 맵은 함수와 목록을 취하여 목록의 요소에 함수를 적용합니다.SML 함수와 튜플

다음 유형이있는 함수 맵은 다형성과 고차 함수입니다.

fun map f [] = [] | map f (x::xs) = (f x)::(map f xs) 
val it = fn : (’a -> ’b) -> ’a list -> ’b list 

두 함수 F 및 g, 2- 튜플 요소들의리스트를 얻어 다른 함수 내지도를 작성한다.

튜플의 첫 번째 요소에 f를 적용하고 튜플의 두 번째 요소에 g를 적용합니다. 예를 들어

:

- fun sqr x = x* x; 
val sqr = fn : int -> int 
- fun cube x:real = x*x*x; 
val cube = fn : real -> real 
- mymap sqr cube [(1,2.0),(2,3.0),(3,4.0),(4,5.0)]; 

내가 먼저 기능 맵을 사용하는 방법을 모르고 내가 두 번째 함수 내지도에 대한 힌트가 필요

답변

1

당신이 시도 할 수 :

fun mymap f g l = 
    let 
     fun f1 f (h,h1) = (f(h),h1) 

     fun g1 g (h,h1) = (h,g(h1)) 
    in 
     map (g1 g) (map (f1 f) l) 
    end 

튜플을 인수로 갖는 두 개의 함수 f1, g1을 정의하여 g1에 대해 f1 및 튜플 목록과 함께 map을 사용할 수 있습니다.

예 :

- mymap sqr sqr [(4,9),(4,16),(9,4)]; 
val it = [(16,81),(16,256),(81,16)] : (int * int) list