3
我是新来的Haskell和它的语义。我了解到,并不是每个函数都可以映射到一个对象。例如:哈斯克尔语义不定值
square :: Int -> Int
square x = x*x
将square的值映射到数学对象。但是,对于任何非终止函数,我们将其映射到一个特殊的数学值⊥
。我想知道如果我必须用这个未定义的值进行计算会发生什么。例如,我有一组数字Z⊥ ={⊥, 1,0,-1}
。如果我将⊥
与1相乘,输出是多少?因为,⊥
的类型将是未定义的,我可以用定义好的类型进行乘法运算吗?因为,⊥
是在Z⊥
的域名,我想我可以做乘法。但是,那么它将不得不返回⊥
!我想就此有一些指导!
作为进一步的说明,'˚F⊥≠⊥'允许当且仅当对于所有的x,'˚FX = F⊥'。 –
是的,这就是我所说的“任何依赖于'⊥'值的计算',这是上面用俗语表示的:如果'f'不依赖于'x',函数可以产生一个具体的值当应用于最低值时。在另一个说明中,'⊥≠⊥',这就是为什么我在上面发明了模糊的“等价”操作符的原因;) – dflemstr
@DietrichEpp:不正确;考虑'f x =(x,x)'。对于所有'x',正确的规则是'f⊥⊑f x'。 – ehird