mie*_*ooy 4 ocaml functional-programming
我想在OCaml中获取列表的第一个和最后一个元素.我希望我的功能会像
'a list -> 'a * 'a
我想做的是
let lista = [1;2;3;4;6;0];;
let rec first_last myList =
        match myList with
        [x] -> (List.hd lista,x)
        | head::tail ->     
                  first_last tail;;
first_last lista;;
当然因为我把列表作为整数然后我正在做这样的语法
*int list -> int * 'a
关键是我不知道如何为'a做这个功能.
方向是什么?
方向是编写两个不同的函数first,last并实现以下first_and_last功能:
let first_and_last xs = first xs, last xs
小智 5
另一种只有一个功能的可能性:
let rec first_last = function
    | [] -> failwith "too bad"
    | [e] -> failwith "too bad"
    | [e1;e2] -> (e1,e2) 
    | e1 :: _ :: r -> first_last (e1::r)
你可能更喜欢这样:
let rec first_last myList = match myList with
    | [] -> failwith "too bad"
    | [e] -> failwith "too bad"
    | [e1;e2] -> (e1,e2) 
    | e1 :: _ :: r -> first_last (e1::r)
| 归档时间: | 
 | 
| 查看次数: | 7184 次 | 
| 最近记录: |