小编mna*_*mna的帖子

显示异构列表的实例

我在定义下面定义的异构列表的Show实例时遇到问题:

{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE FlexibleInstances #-}

import Data.Kind

data HList xs where
     HNil :: HList TNil
     (::^) :: a -> HList as -> HList (a :^ as)

data TypeList = TNil | (:^) Type TypeList

instance Show (HList TNil) where
     show HNil = "[]"
Run Code Online (Sandbox Code Playgroud)

如果Typelist xs中的所有类型都有Show Instance,我想给HList xs一个show实例.我想一个人应该能写出类似的东西

instance (Show a, _) => Show (HList a :^ as) where
     show (x ::^ xs) = show x ++ show xs …
Run Code Online (Sandbox Code Playgroud)

haskell heterogeneous dependent-type

2
推荐指数
1
解决办法
118
查看次数

Utf8和Haskell中重载的字符串

我意识到我的文本中的重音转换为 .我将其归结为以下示例,该示例写入(并覆盖)文件test.txt.

它只使用Data.Text中的方法,它们应该处理unicode文本.我检查了源文件和输出文件都是用utf8编码的.

{-# LANGUAGE OverloadedStrings #-}

import Prelude hiding (writeFile)
import Data.Text
import Data.Text.IO

someText :: Text
someText = "Université"

main :: IO ()
main = do 
    writeFile "test.txt" someText
Run Code Online (Sandbox Code Playgroud)

运行代码后,test.txt包含:Universit .在ghci中,我得到以下内容

*Main> someText
"Universit\233"
Run Code Online (Sandbox Code Playgroud)

这已编码不正确吗?我还在https://hackage.haskell.org/package/text-1.2.2.2/docs/Data-Text.html中找到了对 的评论 ,但我仍然不知道如何纠正上面的例子.

如何在OverloadedString中使用重音并正确地将它们写入文件?

haskell utf-8 overloaded-strings

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