Haskell 检查表可分性

Haskell 检查表可分性,haskell,Haskell,如何检查列表是否可以被9整除 到目前为止我试过了 module Main where main :: IO () main = do let line = [23,24, 30,35,36,40,42,44,54] putStrLn $ listofints line listofints :: [int] -> [int] listofints name = [x | x <- name, n `mod` x == 0] 我到

如何检查列表是否可以被9整除

到目前为止我试过了

module Main where

main :: IO ()
main =  do   
        let line = [23,24, 30,35,36,40,42,44,54]
        putStrLn $ listofints line   

listofints :: [int] -> [int]  
listofints name = [x | x <- name, n `mod` x == 0]
我到处都是错误,我对哈斯克尔很陌生

请帮助我检查列表是否包含偶数,并将其从列表中删除


谢谢

假设您要打印行中可被9整除的任何数字,您可以使用过滤器:

main::IO main=do 让线=[23,24,30,35,36,40,42,44,54] 打印$ListofIts行 列表提示::[Int]->[Int] listofints=filter\x->x`mod`9==0
假设要打印行中可被9整除的任何数字,可以使用过滤器:

main::IO main=do 让线=[23,24,30,35,36,40,42,44,54] 打印$ListofIts行 列表提示::[Int]->[Int] listofints=filter\x->x`mod`9==0
一个接一个地处理这个函数

main :: IO ()
main =  do   
        let line = [23,24, 30,35,36,40,42,44,54]
        putStrLn $ listofints line
putStrLn处理字符串,它不像python或类似语言中的一般打印。为此,我们印刷了:

继续下一步

listofints :: [Int] -> [Int] -- upper case  
listofints name = [x | x <- name, x `mod` n == 0]

哪里???是您希望n为的值,否则您可以直接内联它,并获得[…,x`mod`??==0]。

逐个函数检查此函数

main :: IO ()
main =  do   
        let line = [23,24, 30,35,36,40,42,44,54]
        putStrLn $ listofints line
putStrLn处理字符串,它不像python或类似语言中的一般打印。为此,我们印刷了:

继续下一步

listofints :: [Int] -> [Int] -- upper case  
listofints name = [x | x <- name, x `mod` n == 0]

哪里???是您希望n的值,否则您可以直接内联它并获得[…,x`mod`???==0]。

您希望打印什么?有可被9除的数字吗?我看不到您提供的x值,偶数的x值应为2。对不起,标题我想检查数字是否可被9除,并将其从列表中删除。您到底想打印什么?有可被9除的数字吗?我看不到您提供了x的值,对于偶数,x的值应该是2。对于标题,我很抱歉,我想检查数字是否可被9除,并将其从列表中删除。这就是我要查找的内容\x在这里的意思我理解x mod 9。我来自java背景main如何将行值传递给listofints函数我99%确信$functionname参数会起作用,但只是confirming@raoprint$listofints行表示被解析为print listofints行。listofints行表示使用参数值行和$调用listofints进行分组。@rao\x->。。。是一个lambda函数,基本上它只是一个内联的未命名函数。我们需要它们,因为mod的中缀用法。上面的代码中有几个bug,例如不能将putStrLn与列表一起使用,我仍然记得我是如何犯了与初学者完全相同的错误的-@Willenss和Uli Kohler对你感激不尽,haskell在你的帮助下看起来就像是蛋糕散步:D@rao我建议你向初学者学习haskell和真实世界的haskell,我更喜欢第一个。我刚刚发现,在上有非常好的教程,尽管我不确定他们是否有初学者教程。太棒了,这就是我所寻找的\x在这里的意思,我理解x mod 9。我来自java背景main如何将行值传递给listofints函数我99%确信$functionname参数会起作用,但只是confirming@raoprint$listofints行表示被解析为print listofints行。listofints行表示使用参数值行和$调用listofints进行分组。@rao\x->。。。是一个lambda函数,基本上它只是一个内联的未命名函数。我们需要它们,因为mod的中缀用法。上面的代码中有几个bug,例如不能将putStrLn与列表一起使用,我仍然记得我是如何犯了与初学者完全相同的错误的-@Willenss和Uli Kohler对你感激不尽,haskell在你的帮助下看起来就像是蛋糕散步:D@rao我建议你向初学者学习haskell和真实世界的haskell,我更喜欢第一个。我刚刚发现,在上有非常好的教程,虽然我不确定他们是否有初学者教程。而且,它应该是Int,而不是Int。Int是一个类型变量,所以[Int]->[Int]与[a]->[a]相同。@WillNess的确,我只是直接从OP复制了它,如果有人能指出当数字可以被9整除时,我如何使用删除函数从列表中删除元素,这将非常有帮助。@rao jozefg在这里向您展示的内容将使所有数字都可以被9整除???在列表中。如果将==更改为/=,它将删除它们,即保留所有不能被???整除的数字???。只需使用9而不是???。此外,它应该是Int,而不是Int。Int是一个类型变量,因此[Int]->[Int]与[a]->[a]相同。@WillNess确实,我只是直接从OP复制了它,如果有人能指出当数字可以被9整除时,我如何使用删除函数从列表中删除元素,这将非常有帮助。@rao jozefg在这里向您展示的内容将使所有数字都可以被9整除???在列表中。如果将==更改为/=,它将删除它们,即保留所有非除数的数字
是谁干的???。用9代替???。嗨!虽然这段代码可以回答这个问题,但最好在不介绍其他代码的情况下解释它是如何解决问题的,以及为什么要使用它。从长远来看,纯代码的答案是没有用的。嗨!虽然这段代码可以回答这个问题,但最好在不介绍其他代码的情况下解释它是如何解决问题的,以及为什么要使用它。从长远来看,只使用代码的答案是没有用的。
module Divison where
divisibility :: [Int] -> [String]
divisibility (x:xs) = map show([if x `mod` 9 == 0 && x `mod` 3 == 0 then "divideby3and9"
else if x `mod` 9 == 0 then "divideby9"
else if x `mod` 3 == 0 then "divideby3" else show(x) | x <- x:xs]