Haskell 组合两个整数函数->;字符串类型

Haskell 组合两个整数函数->;字符串类型,haskell,Haskell,我有一个名为“列出苹果”的函数,当给定一个数字5时,它会逐行打印5个“苹果” 使用PUTSR(列表5)。i、 e: 我调用的另一个函数是苹果的一行,给出了一个数字5 a_row_of_apple :: Integer -> String a_row_of_apple k = concat["apple " | x <- [1..k]] Aim:我正在尝试使用上述两个函数定义一个名为list\u all\u apple的函数 list_all_apple :: Integer-&g

我有一个名为“列出苹果”的函数,当给定一个数字5时,它会逐行打印5个“苹果” 使用PUTSR(列表5)。i、 e:

我调用的另一个函数是苹果的一行,给出了一个数字5

a_row_of_apple :: Integer -> String
a_row_of_apple k = concat["apple " | x <- [1..k]]

Aim:我正在尝试使用上述两个函数定义一个名为list\u all\u apple的函数

list_all_apple :: Integer-> String
结果:

apple
apple apple 
apple apple apple 
apple apple apple apple
apple apple apple apple apple
我的尝试: 使用列表理解

list_all_apple :: Integer -> String
list_all_apple k = list_apple k ++ a_row_of_aaple k| x<-[1..k]
list\u all\u apple::Integer->String

list_all_apple k=list_apple k++a_行_示例k | x虽然不使用*list_apple*,但这将是一个解决方案:

list_all_apple :: Integer -> String
list_all_apple k = concat[a_row_of_apple x ++ "\n"| x<-[1..k]]
list\u all\u apple::Integer->String

list_all_apple k=concat[a_row__apple x++“\n”| x虽然不使用*list_apple*,但这将是一个解决方案:

list_all_apple :: Integer -> String
list_all_apple k = concat[a_row_of_apple x ++ "\n"| x<-[1..k]]
list\u all\u apple::Integer->String

list_all_apple k=concat[a_row__apple x++“\n”| x虽然不使用*list_apple*,但这将是一个解决方案:

list_all_apple :: Integer -> String
list_all_apple k = concat[a_row_of_apple x ++ "\n"| x<-[1..k]]
list\u all\u apple::Integer->String

list_all_apple k=concat[a_row__apple x++“\n”| x虽然不使用*list_apple*,但这将是一个解决方案:

list_all_apple :: Integer -> String
list_all_apple k = concat[a_row_of_apple x ++ "\n"| x<-[1..k]]
list\u all\u apple::Integer->String
列出_all_apple k=concat[一行_applex++“\n”| x您可以这样做:

list_all_apple k = concat [(a_row_of_apple $ x - 1) ++ list_apple 1 | x <- [1..k]]
可进一步简化为@wonce的解决方案:

list_all_apple k = concat [a_row_of_apple x ++ "\n"| x<-[1..k]]
必须在每个换行符之前(
\n


通过利用您已经在使用列表理解的事实,您还可以摆脱
concat

list_all_apple k = [s | x<-[1..k], s <- a_row_of_apple x ++ "\n"]
您可以这样做:

list_all_apple k = concat [(a_row_of_apple $ x - 1) ++ list_apple 1 | x <- [1..k]]
可进一步简化为@wonce的解决方案:

list_all_apple k = concat [a_row_of_apple x ++ "\n"| x<-[1..k]]
必须在每个换行符之前(
\n


通过利用您已经在使用列表理解的事实,您还可以摆脱
concat

list_all_apple k = [s | x<-[1..k], s <- a_row_of_apple x ++ "\n"]
您可以这样做:

list_all_apple k = concat [(a_row_of_apple $ x - 1) ++ list_apple 1 | x <- [1..k]]
可进一步简化为@wonce的解决方案:

list_all_apple k = concat [a_row_of_apple x ++ "\n"| x<-[1..k]]
必须在每个换行符之前(
\n


通过利用您已经在使用列表理解的事实,您还可以摆脱
concat

list_all_apple k = [s | x<-[1..k], s <- a_row_of_apple x ++ "\n"]
您可以这样做:

list_all_apple k = concat [(a_row_of_apple $ x - 1) ++ list_apple 1 | x <- [1..k]]
可进一步简化为@wonce的解决方案:

list_all_apple k = concat [a_row_of_apple x ++ "\n"| x<-[1..k]]
必须在每个换行符之前(
\n


通过利用您已经在使用列表理解的事实,您还可以摆脱
concat

list_all_apple k = [s | x<-[1..k], s <- a_row_of_apple x ++ "\n"]

或者简单地说,
unlines[a_row_of apple x | xor simply,
unlines[a_row_of apple x | xor simply,
unlines[a_row_of apple x | xor simply,
unlines[a_row_of apple x | x |但是,zip有两个列表,我有两个字符串。”:要澄清:字符串是列表,字符列表。@TimWolla是的,你说得对“但是,zip有两个列表,我有两个字符串。”:清除:字符串是列表,字符列表。@TimWolla是的,你是对的“但是,zip有两个列表,我有两个字符串。”:清除:字符串是列表,字符列表。@TimWolla是的,你是对的“但是,zip包含两个列表,我有两个字符串。”:要清除:字符串是列表,字符列表。@TimWolla是的,你是对的