gpt4 book ai didi

haskell - 如何限制元组?

转载 作者:行者123 更新时间:2023-12-02 10:51:08 25 4
gpt4 key购买 nike

我认为 Haskell 中的元组就像

  tuple :: (a,b)

这意味着a和b可以是相同类型,也可以是不同类型

所以,如果我定义一个函数而不给出它的类型,那么当我在 ghci 中编写 :t 函数时,我可能会得到 (t,t1) 或一些不同的类型。那么是否有可能只获得相同的类型而不在函数中定义它。我听说 Haskell 不允许这样做

所以我不能写一些像这样的函数

  function [(x,x)]=[(x,x,x)]

获取

  :t function
function :: [(a,a)]->[(a,a,a)]

这是我正在尝试做的一个练习,这个练习希望我编写一个函数而不定义类型。例如获取

  Bool->(Char,Bool) 

当我给予

  :t function

在 ghci 中。我应该写——

  function True=('A',True)

我不允许定义函数的类型部分所以我不能写

  function::(Eq a)=>[(a,a)]->[(a,a,a)]

或者类似的东西

最佳答案

您可以使用 Prelude 中的函数 asTypeOf 将元组的第二个组件的类型限制为与第一个组件的类型相同。例如,在 GHCi 中:

> let f (x, y) = (x, y `asTypeOf` x, x)

> :t f
f :: (t, t) -> (t, t, t)

关于haskell - 如何限制元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16585009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com