小编Odi*_*din的帖子

为什么Haskell中没有Nums Ords?

我知道对于具有类型Num类实例的类型,必须有一个来自EqShow

class (Eq a, Show a) => Num a
Run Code Online (Sandbox Code Playgroud)

我想知道为什么要这样做Eq而不是Ord.数值类型是否有意义Eq但不存在Ord

haskell typeclass

18
推荐指数
2
解决办法
669
查看次数

无用的分配Stackspace?

为什么这个函数在调用之前会分配比它需要的更多的堆栈空间gets()

echo:
  pushl  %ebp
  movl   %esp, %ebp
  pushl  %ebx
  leal   -8(%ebp), %ebx
  subl   $20,  %esp       <-- Why so much space?
  movl   %ebx, (%esp)
  call   gets
  ...
Run Code Online (Sandbox Code Playgroud)

相应的C代码:

void echo()
{
  char buf[4];
  gets(buf);
  puts(buf);
}
Run Code Online (Sandbox Code Playgroud)

为什么在缓冲区和gets的参数之间还有三个单词的额外空间?

堆栈http://s8.postimage.org/h2niz1kut/stack.png

c x86 assembly stack

13
推荐指数
1
解决办法
191
查看次数

为什么我不能在Haskell中比较任意长度的元组?

我知道有长度为2到15的元组的预定义Eq实例.

为什么不将元组定义为某种递归数据类型,以便它们可以被分解,允许为compare任意长度元组的函数定义函数 ?

毕竟,编译器确实支持任意长度的元组.

haskell typeclass

7
推荐指数
3
解决办法
942
查看次数

PIC是否处理不可屏蔽中断?

是否有单独的通信总线用于绕过可编程中断控制器的不可屏蔽中断?

或者PIC管理所有中断但按惯例传递所有不可屏蔽的中断?

这是否依赖于体系结构,或者是否有特定的理由偏爱一个而不是另一个?

hardware x86 assembly interrupt computer-architecture

6
推荐指数
1
解决办法
944
查看次数

如何将类型构造函数限制为返回Ord类型?

假设我有一个树的实现:

data Tree a children = EmptyTree | Tree a (children (Tree a children))
Run Code Online (Sandbox Code Playgroud)

是否可以限制children返回Ord类型?

类似于:

data (Ord children *) => Tree a children = EmptyTree | Tree a (children (Tree a children))
Run Code Online (Sandbox Code Playgroud)

haskell type-kinds

6
推荐指数
1
解决办法
161
查看次数