当前位置: 首页 > 知识库问答 >
问题:

在HASK的类别中,值适合哪里?

鱼安然
2023-03-14

所以我们有Hask类别,其中:

  • 类型是类别的对象
  • 函数是类别中对象到对象之间的形态。

类似地,对于functor,我们有:

    null
    null

共有1个答案

松和泰
2023-03-14

(我将使用数学/范畴理论中的单词,而不是编程中的单词,除非我将其标记为code。)

范畴理论的一个重要思想是把大型复杂事物视为一个点,所以,当你考虑范畴HASK时,形成所有整数的集/组/环/类/范畴的真值被认为是一个点。

类似地,您可能有一个关于整数的非常复杂的函数,但它只是被认为是一个态射集合(集/类)的单个元素(点/箭头)。

每一个么半群都是一个有一个对象的范畴。我们用那个吧。

对此有不止一个答案(因为整数在加法下是一个半群,在乘法下是一个半群)。让我们做加法:

您可以将整数视为具有单个对象的一个类别,其态射是函数,如(+1)、(+2)、(subtract4)。

len :: String -> Int
len = length

len是从stringint的一个半群形态,因为len(xs++ys)=len xs+len ys,所以如果您考虑(string++)和(int+)作为类别,len是一个函数。

(bool)是一个monoide,标识为false,因此它是一个单对象类别。功能

quiteLong :: String -> Bool
quiteLong xs = length xs > 10

因为quitelong“hello”falsequitelong“there!”也是false,但是quitelong(“hello”++“there!”)truefalse不是true

因为quitelong不是态性,所以它也不是函式。

我的观点是,一些Haskell类型可以被视为范畴,但并不是它们之间的所有函数都是Morhpism。

我们不会同时考虑不同层次的范畴(除非你出于某种奇怪的目的而使用两个范畴),而且两个层次之间没有理论上的相互作用,因为没有关于对象和态性的细节。

这部分是因为范畴理论在数学中兴起,提供了一种语言来描述伽罗瓦理论在有限群/子群和场/场扩展之间可爱的相互作用,这两种显然完全不同的结构后来证明是密切相关的。后来,同调/同伦理论使拓扑空间和群之间的函子变得既有趣又有用,但主要的一点是,在函子的两个范畴中,对象和态射允许彼此非常不同。

(通常范畴理论是以函子的形式从一个到另一个函子的形式进入Haskell,所以在函数式编程的实践中,这两个范畴是相同的。)

  • 每个类型本身就是一个类别。ex:Int是所有整数的一个类别。

如果你用特殊的方式来看待他们。详见PhilipJf的回答。

  • 从一个值到同一类型的另一个值的函数是该类别的态射。例如:int->int
    null
 类似资料:
  • 本文向大家介绍C#引用类型和值类型的适用场合和区别,包括了C#引用类型和值类型的适用场合和区别的使用技巧和注意事项,需要的朋友参考一下 1.值类型 值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型。 值类型的变量直接存储数据,分配在托管栈中。变量会在创建它们的方法返回时自动释放。 所有的值类型都是密封(seal)的,所以无法派生出新的值类型。 2.引用类型 引用类型包括:

  • 面试题 redis 都有哪些数据类型?分别在哪些场景下使用比较合适? 面试官心理分析 除非是面试官感觉看你简历,是工作 3 年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才会问这类问题。否则,在宝贵的面试时间里,面试官实在不想多问。 其实问这个问题,主要有两个原因: 看看你到底有没有全面的了解 redis 有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的 KV 操作; 看看

  • 问题内容: 我在表中有一列。 我想知道哪种MySQL类型最适合本专栏。难道,或其他什么东西? 价格可以例如:,,(2个位数的小数点后,如在商店)。 请指教。 问题答案: DECIMAL是因为精确存储了十进制值。例如DECIMAL(10,2)非常适合价格不高于99999999,99的价格。MySQL文档参考

  • Android官网上有Like Executor,ThreadPool和FutureTask,因为AsyncTask被弃用了。关于我以后应该使用哪个API。现在不能使用Kotlin并发,因为我正在学习Java。

  • 问题内容: PHP中是否有一种方法可以找出另一个对象中称为哪个方法的对象。 范例: 有没有办法让我发现从foo对象调用了测试方法? 问题答案: 您可以这样使用: 顺便说一句,看看手册页上的评论:有一些有用的功能和建议;-) 该会输出: 和: 但是,尽管看起来不错,但我不确定它是否应该在您的应用程序中用作“正常事物” …似乎有些奇怪,实际上:设计良好的方法不需要知道它叫什么, 在我看来。

  • 主要内容:PyCharm,Eclipse+PyDev,Visual Studio Code,Microsoft Visual Studio百度搜索“ Python IDE”会发现支持 Python 编程的 IDE 有很多,那么对于零基础的初学者,应该使用哪款 IDE 呢? 我个人推荐初学者使用 Python 自带的 IDLE。因为 IDLE 的使用方法很简单,非常适合初学者入门。本教程中使用的也是 Python 自带的 IDLE。 当然,除了 IDLE,还有很多其他的 IDE 供大家选择,这里列