《Haskell函数式编程入门》练习

本文介绍了Haskell编程中的一些实践问题,包括使用递归实现删除列表元素的`delete`函数,仿照`take`定义`drop`函数,将十进制转为二进制的函数,实现二分查找的`search`函数,以及生成汉明数(Hamming Number)的算法。通过这些练习,深入理解Haskell的函数式编程特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

递归函数

1.Data.List中有一个函数为delete,它可以删除列表中的元素,即它的类型为delete::Eq a=>a->[a]->[a]。定义一个delete函数从列表中删去所有列表中出现的给定的元素。

例如:

> delete 2 [4,2,4,6,2]

[4,4,6]

2.请用与take类似的方法定义Prelude中的drop函数。

module Test (
	delete',
	drop'
	) 
where

delete' :: Eq a => a -> [a] -> [a]
delete' _ [] = []
delete' n (x:xs) = if n == x then delete' n xs else x : delete' n xs 

drop' :: Int -> [a] -> [a]
drop' _ [] = []
drop' n (_:xs) = drop' (n-1) xs


3.定义一个函数,将十进制转换为二进制,结果可以用只含有1与0的字符串来表示。

module Test (
	dec2bin
	) 
where

ls = "01"

dec2bin' :: Int -> String
dec2bin' n | n < 0 = error "not support yet!"
           | n == 0 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值