相关疑难解决方法(0)

缩进字符串中的所有行

我有一些Show定义了自定义实例的类型。它们的结构如下:

data TopLevel = TopLevel SndLevel
data SndLevel = SndLevel Int

instance Show SndLevel where
  show (SndLevel i) = "SndLevel: \n\t" ++ (show i)
Run Code Online (Sandbox Code Playgroud)

当它们出现在我的输出中时,我的Showfor实例SndLevel产生看起来很漂亮的字符串:

SndLevel: 
  5
Run Code Online (Sandbox Code Playgroud)

我想为此创建一个Show实例,topLevel以便TopLevel (SndLevel 5)在打印到终端时看起来像这样:

TopLevel
  SndLevel
    5
Run Code Online (Sandbox Code Playgroud)

我希望找到一个内置在Haskell中的函数,该函数将添加"\t"在字符串的开头以及"\n"该字符串出现的每个位置之前。

最好的解决方法,我发现将沿着答案的线条去这个职位。在这种情况下,我将替换"\n""\t\n"

我假设我不是第一个需要在Haskell中使用Show实例来按层次组织数据的人,所以我想知道是否有一种更惯用的方式来完成此任务。我的问题有更好的解决方案吗?

ps:我意识到对于我上面使用的示例数据类型而言,这种打印不是最好的。我要为其编写实例的实际数据类型是产品类型,因此当它们延伸到一行时,它们的读取效果不佳。考虑到这一点,如果有一种流行的方法来解决这种问题,而无需使用换行符和制表符,那也可以解决我的问题。

string haskell

6
推荐指数
1
解决办法
119
查看次数

如何在不使用像MissingH这样的外部库的情况下在Haskell中替换字符串的子字符串?

我想在Haskell中用字符串替换子字符串,而不使用外部库,如果可能的话,还要具有良好的性能.

我想过使用Data.Text替换函数,但我不想将整个程序移植到使用Text类型而不是Strings.将包装String成一个Text值,然后替换我想要的东西,然后将那个Text值解压缩到String很多的缓慢Strings

string haskell substring

3
推荐指数
2
解决办法
2497
查看次数

标签 统计

haskell ×2

string ×2

substring ×1