函数式编程原理
文章平均质量分 80
京雨
华中某科技大学大四在读
展开
-
函数式编程实验2/华科
任务一分析以下函数或表达式的类型(先自己分析再程序验证):fun all (your, base) = (*fn : int*string list->string list*) case your of 0 => base | _ => "are belong to us" :: all(your - 1, base) fun funny (f, []) = 0 (*fn:(a'*int->int)*a' list->int*)原创 2022-01-07 13:46:15 · 1085 阅读 · 0 评论 -
函数式编程实验1/华科
任务一下列模式能否与类型为int list的L匹配成功?如果匹配不成功,指出该模式的类型?(假设x为int类型)x::L 成功_::_ 成功x::(y::L) 成功(x::y)::L 不成功,不能int::int[x, y] 成功x::L 表示将x追加到列表L中,_为通配符可以表示任意类型数据。::左边必须是元素,右边是列表。任务二试写出与下列表述相对应的模式。如果没有模式与其对应,试说明原因。list of length 3原创 2022-01-07 13:35:59 · 1319 阅读 · 0 评论 -
ML语言/函数式编程原理(三)
八、高阶函数1.数据标准化问题min-max:对原始数据进行线性变换,是结果值映射到[-1,1]之间。f:real->real 原始区间的最小值a和最大值b,f使得 f(a)=-1.0,f(b)=1.0norm:real*real->(real->real) real*real得到一个函数real->realfun norm(a,b) = fn=>(2.0*x-a-b)/(b-a)函数norm的扩展使用fun norm(-2.0,2.0) = fn原创 2021-12-21 23:40:08 · 525 阅读 · 0 评论 -
函数式编程实验4/华科
任务一函数map和filter定义如下:(* map: ('a -> 'b) -> 'a list -> 'b list *)fun map f [ ] = [ ] | map f (x::xs) = (f x) :: (map f xs)(* filter: ('a -> bool) -> 'a list -> 'a list *)fun filter f [] = [] | filter f (x::xs) = if f x then x原创 2021-12-21 23:38:50 · 718 阅读 · 0 评论 -
函数式编程实验3/华科
任务一编写函数listToTree: int list -> tree,将一个表转换成一棵平衡树。提示:可调用split函数,split函数定义如下:如果L非空,则存在L1, x, L2,满足:split L = (L1, x, L2) 且 L = L1 @ x :: L2 且 length(L1)和length(L2)差值小于1。datatype tree=Empty | Node of tree*int*tree;fun split [] =([],[]) | split [原创 2021-12-15 23:09:39 · 2551 阅读 · 0 评论 -
ML语言/函数式编程原理(二)
四、排序一、整数的比较compare: int *int ->order定义新的数据类型orderdatatype order=LESS|EQUAL|GREATER;fun compare(x:int,y:int):order= if x<y then LESS else if y<x then GREATER else EQUAL;二、排序结果判断sortedsorted : int list->bool (判断升序)fun sorted [] =true原创 2021-12-15 11:39:39 · 1413 阅读 · 0 评论 -
ML语言/函数式编程原理(一)
函数式编程原理一、ML标准类型基础类型(basic types):unit,int,real,bool,string其中的unit类似于C语言中的void表(list):int list,(int ->int)list元组(tuples):int *int,int * int * real函数(functions):int->int,real->int * int所有对象都要有类型,不一定显示说明,但必须能够静态推导(在编译时该类型能被编译器根据上下原创 2021-12-15 10:38:32 · 2616 阅读 · 0 评论