代码之家  ›  专栏  ›  技术社区  ›  developer_hatch

main=return()是一个程序吗?

  •  1
  • developer_hatch  · 技术社区  · 5 年前

    我不符合 Wikipedia Haskell代码:

    main = return ()
    

    main = undefined
    

    最重要的是,“计算机程序是指令的集合 1 “在哪里 instructions 是这样定义的。

    main = return () 计算机程序?定义是否引用机器代码?

    如果是。。。为什么? 如果不是的话,在哈斯凯尔,什么被认为是一个项目?

    1 回复  |  直到 5 年前
        1
  •  7
  •   developer_hatch    5 年前

    对程序的定义没什么 要求 它有显式的I/O /bin/sleep . 除了在固定的时间内什么也不做。归根结底,它确实有输入/输出,因为它“引起”(在这个术语的弱意义上)时间上的变化。

    另一个例子是Python程序,例如:

    while True:
        pass
    

    它所做的只是制造热量,字面上说,但没有理由认为这不是一个程序。

    未优化的程序版本实际上可能包含加载立即值的机器指令 5 进入某个寄存器,然后程序终止。然而,像Haskell这样的优化编译器会推断出该值从未被使用过,并且会很乐意将其完全剔除(而且这样做是非常自由的,因为它不会产生任何可观察的效果)。不过,程序终止的机器指令仍然存在。