Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Haskell中编写密码强度测试程序?_Haskell_Functional Programming - Fatal编程技术网

如何在Haskell中编写密码强度测试程序?

如何在Haskell中编写密码强度测试程序?,haskell,functional-programming,Haskell,Functional Programming,我对Haskell很陌生,我在网上找到了一些练习,其中一个要求编写一个程序,用字符串检查单词是否至少有8个字符、1个大写字母和1个数字。如果是,则返回true。 但是我完全不知道该怎么办。 我曾尝试使用Lambda表达式,但我认为这不是解决问题的方法 非常感谢你的帮助, 谢谢我建议这样做 import Data.Char checkPassword :: String -> Bool checkPassword xs = all (\f -> f xs) [checkOneDigi

我对Haskell很陌生,我在网上找到了一些练习,其中一个要求编写一个程序,用字符串检查单词是否至少有8个字符、1个大写字母和1个数字。如果是,则返回true。 但是我完全不知道该怎么办。 我曾尝试使用Lambda表达式,但我认为这不是解决问题的方法

非常感谢你的帮助,
谢谢

我建议这样做

import Data.Char

checkPassword :: String -> Bool
checkPassword xs = all (\f -> f xs) [checkOneDigit, checkOneUppercase, checkLength]
    where checkOneDigit xs = (== 1) $ length $ filter isDigit xs
          checkOneUppercase xs = (== 1) $ length $ filter isUpper xs
          checkLength xs = (>= 8) $ length xs

看看
all
any
isUpper
isLower
。只是出于好奇,你用的是哪套练习集?我认为一个大写字母应该至少读一个大写字母。。。也许使用
any
是一个更好的主意。嗨,丹尼尔,欢迎来到stackoverflow!谢谢你的回答。我只是想说,特别是因为OP要求帮助做一个练习,我觉得这不是一个有用的答案。OP不需要密码检查器,他们主要是学习如何用Haskell编程。我喜欢提供足够的信息来“解锁”这个人,无论他们需要什么来重新开始进步(比如,让他们指向
any
函数并给出一个例子)。或者,如果您必须提供完整的解决方案,请将其作为讨论有趣的概念或方法的机会。