Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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 - Fatal编程技术网

Haskell 将所有[]替换为{}-尽可能短

Haskell 将所有[]替换为{}-尽可能短,haskell,Haskell,鉴于以下代码: import Data.List; main = (readLn :: IO [Integer]) >>= print . subsequences 它从标准输入(例如[1,2,3])中获取整数列表,并输出如下内容: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3] 我希望它是这样的: {}、{1}、{2}、{1,2}、{3}、{1,3}、{2,3}、{1,2,3} 因此,我的目标是将结果字符串中的每个[和]分别替换为{和} 我怎

鉴于以下代码:

import Data.List; 
main = (readLn :: IO [Integer]) >>= print . subsequences
它从标准输入(例如
[1,2,3]
)中获取整数列表,并输出如下内容:

[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]

我希望它是这样的:

{}、{1}、{2}、{1,2}、{3}、{1,3}、{2,3}、{1,2,3}

因此,我的目标是将结果字符串中的每个
[
]
分别替换为
{
}


我怎样才能做到这一点呢?

你所需要的就是爱和把
打印成
计算机。显示
,然后添加一个简单的地图
,在地图之间进行转换:

main :: IO ()
main = 
    let fn '[' = '{'
        fn ']' = '}'
        fn c   = c
    in (readLn :: IO [Integer]) >>= putStrLn . map fn . show . subsequences

上述代码,给定
[1,2,3]
,将输出:

{}、{1}、{2}、{1,2}、{3}、{1,3}、{2,3}、{1,2,3}


如果这是一个代码,那么您可以有(106个字符)


你所需要的就是爱和把
打印成
计算机。显示
,然后添加一个简单的地图
,在地图之间进行转换:

main :: IO ()
main = 
    let fn '[' = '{'
        fn ']' = '}'
        fn c   = c
    in (readLn :: IO [Integer]) >>= putStrLn . map fn . show . subsequences

上述代码,给定
[1,2,3]
,将输出:

{}、{1}、{2}、{1,2}、{3}、{1,3}、{2,3}、{1,2,3}


如果这是一个代码,那么您可以有(106个字符)



你发布的代码与你所问的问题有什么关系?我试图学习haskell,我发现最好的方法是看别人如何解决问题。但你似乎要问的问题与IO无关,也与后续问题无关。那么,您发布的代码片段有什么意义呢?如果您还不能发布任何有用的代码尝试,请通过发布一些示例输入和输出来准确描述问题。@leftaroundabout。。。好吧,这是一种代码高尔夫(见这里的讨论:)-这是OP最不需要的东西;)@左撇子我已经把这个问题编辑好了,这样你就可以明白我的意思了。你发布的代码与你要问的问题有什么关系?我正在努力学习haskell,我发现最好的方法就是看看别人是如何解决问题的。但是你似乎要问的问题与IO无关,也与子序列无关。那么,您发布的代码片段有什么意义呢?如果您还不能发布任何有用的代码尝试,请通过发布一些示例输入和输出来准确描述问题。@leftaroundabout。。。好吧,这是一种代码高尔夫(见这里的讨论:)-这是OP最不需要的东西;)@左撇子我已经把这个问题改了,这样你就能明白我的意思了。有没有办法把它改短一点?我有点困惑,现在如何包括阅读标准文本?@Cosaqueee请看编辑。这是最好的答案!我希望它能短一些,但仍然是超级棒,谢谢你@Cosaqueee更短,如“键入的字符更少”或“行更短”?我认为如果你去掉签名,只需将
fn
移到
main
(可能???)之外,它甚至更短。有没有办法让它更短?我有点困惑,现在如何包括阅读标准文本?@Cosaqueee请看编辑。这是最好的答案!我希望它能短一些,但仍然是超级棒,谢谢你@Cosaqueee更短,如“键入的字符更少”或“行更短”?我认为,如果你去掉签名,只需将
fn
移到
main
之外,它甚至更短(可能??)