我正在尝试创建一个以谓词和列表作为输入的函数。并从列表中删除谓词所有的元素。到目前为止我所拥有的是以下功能:
removeif :: func->[a]->[a]
removeif [] = []
removeif func (h:t)= if func then delete h (h:t) else removeif func t
我对func
的{{1}}部分感到困惑,因为我不知道如何判断它是谓词。
例如我想要的是我从终端给出这个命令
func->[a]->[a]
removeif threefolds [1,2,3,4,5,6,7,8,9]
是一个本地函数,它返回一个三元组的无限列表,我想从输入列表中删除那些倍数。我想让threefolds
成为一个bool函数,但不确定是否有必要。
答案 0 :(得分:3)
谓词应该是+(void)sendGetRequestWithUrl:(NSString *)urlStr
paramenters:(NSDictionary *)paramDic
success:(successBlock)success
failure:(failureBlock)failure {
AFHTTPSessionManager* manager=[AFHTTPSessionManager manager];
[manager GET:urlStr parameters:paramDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
success(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSError*error1=nil;
failure(error1);
}];
}
类型的函数。因此,a -> Bool
的签名应为
removeif
如果removeif :: (a -> Bool) -> [a] -> [a]
的类型为threefolds
,您就可以了: - )
答案 1 :(得分:1)
Threefolds应该返回一个布尔值,如下所示:
let threefolds x = x `mod` 3 == 0