簡體   English   中英

SML 函數和元組

[英]SML Function and Tuples

SML 函數映射接受一個函數和一個列表,並將該函數應用於列表的元素。

具有以下類型的函數映射既是多態函數又是高階函數。

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

編寫另一個函數 mymap,它接受兩個函數 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)];

我不知道如何使用第一個函數映射,我需要第二個函數 mymap 的提示

你可以試試:

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,它們以元組作為參數,以便我們可以使用帶有 f1 的映射和元組列表,而 g1 也是如此。

例子:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM