资源描述:
《λ演算和函数式设计语言.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、λ演算与函数式设计语言有以下函数:Y=λg.((λf.g(ff))(λf.g(ff)))试证YF=F(YF)[F是任意函数]证明:YF=λg.((λf.g(ff))(λf.g(ff)))F=(λf.F(ff))(λf.F(ff))=F((λf.F(ff))(λf.F(ff)))=F(YF)2.利用λ规约法则将下式化到最简(λp.λq.λr.pqr)(λp.λq.pqr).=(λp.λq.λr.pqr)(λq.rq)[beta]=(λp.λq.λw.pqr)r[yita,alpha]=λq.λw.rqr[beta]=λw.rr[beta]=r
2、逻辑式设计语言设谓词good(X)表示X是好整数,谓词pow2(Y,Z)表示2的Y次方为Z.根据以下公理证明1020是个好整数.f1good(0)f2pow2(0,1)r3good(A-2)←good(A)r4good(A+2)←good(A)r5good(A*2)←good(A)r6good(A)←pow2(P,A),good(P)r7pow2(P+1,A*2)←pow2(P,A)s1good(2)f1和r4s2good(4)s1和r5s3good(8)f2和r5s4good(16)s3和r5s5good(32)s4和r5s6good(6
3、4)s5和r5s7good(128)s6和r5s8good(256)s7和r5s9good(512)s8和r5s10good(1024)s9和r5s11good(1022)s10和r3s12good(1020)s11和r32.用prolog写出完整的矩阵相乘程序.方法一:%第二个矩阵转置matrix_mul(X,Y,Z):-trans(Y,Y1),mmultiply(X,Y1,Z).%将矩阵分解成向量的list和向量,调用multiply做list与向量乘mmultiply([],_,[]).mmultiply([V0
4、Rest],V1,[
5、Result
6、Others]):-mmultiply(Rest,V1,Others),multiply(V1,V0,Result).multiply([],_,[]).multiply([V0
7、Rest],V1,[Result
8、Others]):-multiply(Rest,V1,Others),vmul(V1,V0,Result).%向量乘vmul([],[],0).vmul([H1
9、T1],[H2
10、T2],Result):-vmul(T1,T2,Newresult),ResultisH1*H2+Newresult.%矩阵转置trans(
11、[],[]).trans([[H
12、T]
13、Tail],[[H
14、NT]
15、NTail]):-firstCol(Tail,NT,Rest),trans(Rest,NRest),firstCol(NTail,T,NRest).firstCol([],[],[]).firstCol([[H
16、T
17、Tail],[H
18、Col],[T
19、Rows]):-firstCol(Tail,Col,Rows).domainsVt=integer*Ut=integer*predicateform_Vector(Vt,integer)form_Matrix(Ut,integ
20、er,integer)Matrinx_Multi(Ut,Ut,Ut)Vm_Multi((Vt,Ut,Ut)Vector_Multi((Vt,Vt,integer)Main_fun(Ut)Clavsesform_Vector([H
21、T],X):-0readist(H),form_Vector(T,X-1),form_Vector([],0).Matrix_Multi([H
22、T],L2,[H3
23、T3]):-Vm_Multi(H1,L2,H3).Matrix_Multi(T1,L2,T3).Matrix_Multi([],_,[]).Matrix
24、_Multi(_,[],[]).Vm_Multi(L1,[H2
25、T2],[H3
26、T3]):-Vector_Multi(L1,H2,H3).Vm_Multi(L1,T2,T3).Vm_Multi([],_,[]).Vm_Multi(_,[],[]).Vector_Multi([H1
27、T1,[H2
28、T2],[H3
29、T3]):-S1=H1*H2,Vector_Multi(T1,T2,S2):-S=S1+S2.Vector_Multi([],_,0).Mach_fun(l):-Readint(X,)Readint(Y),X>0,Y>0,form_M
30、atrix(L1,X,Y),form_Matrix(L2,X,Y),Matrix_Multi(L1,L2,L).方法二总结prolog中的cut用法,怎样是安全的,怎样是不安全的