如何在自定义Prelude库Protolude中显示字符串

OneEye问题

我读了这个关于如何创建一个自定义的前奏库的博客文章。该库可以在这里找到它做的一件事是禁止String它还定义了用于自动字符串转换的功能(此处)。我已OverloadedStrings在cabal文件中启用

在使用此库之前,我有:

data Point = Point Int Int
instance Show Point where
  show (Point x y) = "(" ++ show x ++ ", " ++ show y ++ ")"

使用该库后,它show' is not a (visible) method of class显示:“ Show'”

因此,我诉诸于创建一个自定义函数来显示数据类型:

showPoint :: Point -> LText
showPoint (Point x y) = toS ("(" ++ show x ++ ", " ++ show y ++ ")")

编译器说的用法toS, "(", show是模棱两可的,但我不明白为什么。我是否必须要做一些类似此处建议的事情

编辑:

必须禁用OverloadedStrings并将代码更改为以下内容:

showPoint :: Point -> LText
showPoint (Point x y) = toS "(" <> show x <> toS ", " <> show y <> toS ")"

想知道是否有可能在不禁用OverloadedStrings的情况下做同样的事情,所以我不必toS每个都使用String

埃里克

这对我有用:

{-# LANGUAGE OverloadedStrings #-}

module Test where

import Protolude
import qualified Base as PBase

data P = P Int

instance PBase.Show P where
  show (P x) = "a P " ++ show x

更新

的protolude实现show是常规功能(请参见Protolude.hs的结尾):

show :: (Show a, StringConv String b) => a -> b
show x = toS (PBase.show x)

因此,您需要一个PBase.Show实例才能使用protolude的show函数。

另外protoludeshow可以返回任何字符串类型,因此您不必通过定义PBase.show实例来强迫其他人使用String。

更新#2

您可以show导入以下类的typeclass函数GHC.Show

{-# LANGUAGE NoImplicitPrelude #-}

import Protolude
import GHC.Show

data P  = P Int

instance Show P where
  show (P x) = "<-- P " ++ GHC.Show.show x ++ " -->"

main = print (P 123)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使pytest显示灯具参数的自定义字符串表示形式?

来自分类Dev

Android:如何在自定义类中从strings.xml访问字符串数组?

来自分类Dev

在Python中创建自定义字符串类型

来自分类Dev

如何在Swift中为自定义结构和类更改默认的嵌入式字符串

来自分类Dev

为什么自定义日志事件的字符串未显示在事件日志中?

来自分类Dev

如何在MySQL中创建自定义排序顺序并检查字符串的开头?

来自分类Dev

如何在SQL连接字符串中添加自定义属性?

来自分类Dev

Dart Polymer:创建时如何在自定义中设置非字符串字段

来自分类Dev

PHP解析字符串中的自定义字符

来自分类Dev

如何在Java中将字符串值转换为自定义模型对象?

来自分类Dev

如何在Java中生成自定义长度的随机字母数字字符串?

来自分类Dev

如何在Laravel中为字符串字段创建自定义自动增量

来自分类Dev

如何让自定义字符串显示在form.collection_select的下拉列表中

来自分类Dev

如何在字符串中插入标签以替换字母并对其进行自定义?

来自分类Dev

如何防止自定义字符串类型混合?

来自分类Dev

Android:如何在自定义类中从strings.xml访问字符串数组?

来自分类Dev

如何在C#中获取自定义dateTime格式的字符串

来自分类Dev

如何从自定义格式的字符串创建JSON

来自分类Dev

如何在Swift中为自定义结构和类更改默认的嵌入式字符串

来自分类Dev

如何在Python中为字符串对象提供自定义方法?

来自分类Dev

如何在Java中使用自定义注释传递字符串和对象

来自分类Dev

如何在javascript中将字符串/数字格式化为自定义模式?

来自分类Dev

如何在敲除自定义绑定中设置基于字符串/命名的模板?

来自分类Dev

PHP解析字符串中的自定义字符

来自分类Dev

如何在Android中的自定义异常类中将错误消息的字符串外部化

来自分类Dev

如何在Android中获取和转换自定义JSON数据作为字符串

来自分类Dev

如何迭代 for 循环并创建自定义字符串

来自分类Dev

如何在自定义 R 函数中使用文本字符串作为变量

来自分类Dev

如何在 WordPress 的自定义翻译短代码中返回翻译后的字符串

Related 相关文章

  1. 1

    如何使pytest显示灯具参数的自定义字符串表示形式?

  2. 2

    Android:如何在自定义类中从strings.xml访问字符串数组?

  3. 3

    在Python中创建自定义字符串类型

  4. 4

    如何在Swift中为自定义结构和类更改默认的嵌入式字符串

  5. 5

    为什么自定义日志事件的字符串未显示在事件日志中?

  6. 6

    如何在MySQL中创建自定义排序顺序并检查字符串的开头?

  7. 7

    如何在SQL连接字符串中添加自定义属性?

  8. 8

    Dart Polymer:创建时如何在自定义中设置非字符串字段

  9. 9

    PHP解析字符串中的自定义字符

  10. 10

    如何在Java中将字符串值转换为自定义模型对象?

  11. 11

    如何在Java中生成自定义长度的随机字母数字字符串?

  12. 12

    如何在Laravel中为字符串字段创建自定义自动增量

  13. 13

    如何让自定义字符串显示在form.collection_select的下拉列表中

  14. 14

    如何在字符串中插入标签以替换字母并对其进行自定义?

  15. 15

    如何防止自定义字符串类型混合?

  16. 16

    Android:如何在自定义类中从strings.xml访问字符串数组?

  17. 17

    如何在C#中获取自定义dateTime格式的字符串

  18. 18

    如何从自定义格式的字符串创建JSON

  19. 19

    如何在Swift中为自定义结构和类更改默认的嵌入式字符串

  20. 20

    如何在Python中为字符串对象提供自定义方法?

  21. 21

    如何在Java中使用自定义注释传递字符串和对象

  22. 22

    如何在javascript中将字符串/数字格式化为自定义模式?

  23. 23

    如何在敲除自定义绑定中设置基于字符串/命名的模板?

  24. 24

    PHP解析字符串中的自定义字符

  25. 25

    如何在Android中的自定义异常类中将错误消息的字符串外部化

  26. 26

    如何在Android中获取和转换自定义JSON数据作为字符串

  27. 27

    如何迭代 for 循环并创建自定义字符串

  28. 28

    如何在自定义 R 函数中使用文本字符串作为变量

  29. 29

    如何在 WordPress 的自定义翻译短代码中返回翻译后的字符串

热门标签

归档