我试图使ghci为我的库显示的类型尽可能直观,但在使用更高级的类型特性时遇到了很多困难。
假设我在一个文件中有这段代码:
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
import GHC.TypeLits
data Container (xs::[*]) = Container
我在ghci中加载它,然后键入以下命令:
ghci> :t undefined :: Container '[String,String,String,String,String]
:: Container
((':)
*
String
((':)
* String ((':) * String ((':) * String ((':) * String ('[] *))))))
data Nat1 = Zero | Succ Nat1
type family Replicate (n::Nat1) x :: [*]
type instance Replicate Zero x = '[]
type instance Replicate (Succ n) x = x ': (Replicate n x)
type LotsOfStrings = Replicate (Succ (Succ (Succ (Succ (Succ Zero))))) String
ghci> :t undefined :: Container LotsOfStrings
undefined :: Container LotsOfStrings
ghci> :t undefined :: Container (Replicate (Succ (Succ (Succ (Succ (Succ Zero))))) String)
:: Container
((':)
*
[Char]
((':)
* [Char] ((':) * [Char] ((':) * [Char] ((':) * [Char] ('[] *))))))
为什么ghci要替换类型族,而不是类型同义词?有没有办法控制ghci什么时候做替换?
我知道的变通方法是使用:仁慈。例如,
GHCI>:kind(Container'[String,String,String,String,String])
给出:
*
[Char]
((':)
* [Char] ((':) * [Char] ((':) * [Char] ((':) * [Char] ('[] *))))))
我想知道GHCi中(或其他地方)是否存在将类型同义词和族扩展出任意类型表达式的功能。
我正在尝试使用一个websocket发送音频消息,我应该将音频流改为什么类型的消息,以便我可以使用一个socket发送?如果我直接使用一个WebSocket.send(音频),我会得到一个错误“DOMException”,我应该把它改为二进制数据吗?怎么做的?我是一个全新的程序,所以请帮助!!!
我正在使用SpringBoot和@JmsListener从同一个QManager中的多个队列中检索IBM MQ消息。到目前为止,我可以得到没有任何问题的消息。但也有可能出现这样的情况,我不得不暂时停止使用其中一个队列中的MSG。它不一定是动态的。 我没有使用任何自定义ConnectionFactory方法。需要时,我想在application.properties中进行配置更改,以禁用特定的队列消
问题内容: 该规范对于计算CSS具体规定:(粗体雷) 注意:允许重复出现同一 简单选择器 ,并且确实会增加特异性。 因此,例如,具有两倍的特异性比- DEMO 但是,对于“ 简单选择器 ” 一词,规格说明如下:(粗体字) 简单选择器可以是 类型选择 器,也可以是通用选择器,紧随其后的是零个或多个属性选择器,ID选择器或伪类(以任何顺序)。 因此,由于规范说允许重复出现相同的 简单选择器 -这意味着
本文向大家介绍如何做的消息队列选型,为什么选择kafka?相关面试题,主要包含被问及如何做的消息队列选型,为什么选择kafka?时的应答技巧和注意事项,需要的朋友参考一下 kafka和rocketmq吞吐量可达百万级,比activemq、rabbitmq要高一个数量级 kafka和rocketmq都是分布式架构,高可用 kafka和rocketmq都是毫秒级低延时,rocketmq甚至到微秒级 r
问题内容: 您能帮助我了解 无界通配符类型列表 和 原始类型列表 之间的区别吗? 除此之外,有人可以帮助我了解什么是有 界类型参数列表 ? 问题答案: 以下是这三个的摘要: :没有类型参数的列表。它是一个列表,其元素可以是任何类型- 元素可以是不同类型 。 :具有无限制类型参数的列表。它的元素是特定但未知的类型。 元素必须都是相同的类型 。 :带有类型参数称为的列表。所提供的类型必须是extens