【发布时间】:2021-03-30 13:11:46
【问题描述】:
我是haskell的新手! 我需要编写一个处理 ID 号的函数。我需要检查整数的第一位。如果数字是 1 或 3,那么客户是男性,如果数字是 2 或 4,那么客户是女性。我想我需要一个辅助函数,它将长整数拆分为整数列表。 函数名为 szemelyinem,它有一个参数/参数,是一个 11 长整数。
这是分割函数:
split :: Integral x => x -> [x]
split 0 = []
split x = split (x `div` 10) ++ [x `mod` 10]
在我的脑海中,概念是拆分长数字,然后将其加载到函数中,然后检查列表中的第一个元素并返回一个字符串。但我不知道如何开始这个:/
我有一个这样的例子:
szemelyinem 40504291247
Result: "female"
【问题讨论】:
-
你能写一个函数,比如
foo,将Integer数字转换成数字列表吗? -
在这种情况下,我认为您不需要通用
Integrals - 我什至认为您不需要将其拆分为Ints 的列表 - 你能写你的函数吗如果您有Chars 的列表?您知道任何可以将您的号码变成列表或Char的功能吗? (提示:String = [Char] -
另一个提示:您可以使用
head或(更喜欢)通过对firstEl : restEl模式使用模式匹配从列表中获取第一个元素的模式 -
老实说,并非如此。顺便说一句,这是一个家庭作业,但我的老师向我们展示了一些基本的东西。所以此刻我很难过。在 java 或 C++ 中,这将是一个 5 分钟的任务,但在 Haskell 中,到目前为止这是一场噩梦。
-
ID 是否总是 11 位数字?如果是这样,你可以只除以 10^10 就完成了吗?