我有一个以这种方式工作的“平面”功能
let myList=[(0,1);(0,2);(0,3);(1,5);(2,4);(3,5);(5,4);(5,6);(4,3)];;
let flat = List.fold_left (fun acc (x,y) -> x::y::acc) [] ;;
flat myList
- : int list = [4; 3; 5; 6; 5; 4; 3; 5; 2; 4; 1; 5; 0; 3; 0; 2; 0; 1]
我有一个以这种方式定义的Typed数据图:
type 'a graph = Gr of ('a * 'a ) list;;
let myList2= Gr[(0,1);(0,2);(0,3);(1,5);(2,4);(3,5);(5,4);(5,6);(4,3)];;
如何修改此类型的“平面”?
结果应该相同,但输入必须是图表
答案 0 :(得分:1)
您可以通过简单匹配从图表类型中提取列表:
let Gr l = myList2 in
flat l;;
答案 1 :(得分:1)
你可以这样做:
# type 'a graph = Gr of ('a * 'a ) list;;
type 'a graph = Gr of ('a * 'a) list
# let flat (Gr l)= List.fold_left (fun acc (x,y) -> x::y::acc) [] l;;
val flat : 'a graph -> 'a list = <fun>