我最近一直在教自己Haskell,我的一个练习是实现一个函数,它接受两个函数作为参数,并将第3个函数传递给第一个函数,将结果传递给第二个函数.我有更多的球拍经验.我为球拍创建的功能是
(define (nestfun3 function function2)
(function2 (function 3)))
Run Code Online (Sandbox Code Playgroud)
我正试图在球拍中复制这个功能.我知道只有一个函数作为参数的高阶函数可以是
twice function = function . function
Run Code Online (Sandbox Code Playgroud)
我怎样才能通过两个功能?我试过了
twice function = function . function
three function = function . twice
Run Code Online (Sandbox Code Playgroud) 执行时,Python中以下嵌套控件结构的输出是什么?
for x in range(3):
for y in range(x):
print x,y
Run Code Online (Sandbox Code Playgroud)
我知道答案是
1 0
2 0
2 1
Run Code Online (Sandbox Code Playgroud)
但我不清楚为什么会出现这种情况.
我知道range(3)函数会给你{0,1,2}所以为什么不是第一个输出0 0而不是1 0?
我想在Prolog中定义一个谓词,prod_list/2将列表的每个元素相乘.我有空列表的问题希望产品应该为零,而我得到假.我的代码是
prod_list([H], H).
prod_list([H|T], Product) :- prod_list(T, Rest),
Product is H * Rest.
Run Code Online (Sandbox Code Playgroud)
我得到的结果是prod_list([4,3],Product). - > Product = 12但是当我做prod_list([],Product)时.我得到假而不是Product = 0.
请帮忙.