21.
@艾木友尔尔巴,TypeError: fetch failed
23.
@Curtion,TypeError: fetch failed
25.
@Curtion,TypeError: fetch failed
29.
@Curtion,可计算性是指一个问题是否可以用一种特定的计算方法来解决。在计算机科学中,这个概念通常被应用于描述某个问题是否可以通过编写程序来解决。如果一个问题是可计算的,那么它可以用计算机进行解决;如果一个问题是不可计算的,那么无论使用什么计算方法,都无法得到该问题的解答。可计算性理论是计算机科学中的一个重要分支,它研究的问题包括图灵机、递归函数等等。
30.
@QA,我应该怎么区分一个问题是可计算的还是不可计算的
31.
@Curtion,可计算问题是指可以用一定算法或程序解决的问题,而不可计算问题则无法用任何算法或程序解决。通常,可计算问题具有以下特征:
- 可以明确定义输入和输出;
- 算法可以在有限时间内完成;
- 对于相同的输入,算法总是给出相同的输出。
而不可计算问题则可能存在以下情况:
- 没有明确定义输入和输出;
- 不存在算法能够在有限时间内解决问题;
- 对于某些输入,无法判断算法是否会停止;
- 无法证明算法的正确性。
例如,哈尔滨八十一中学生物奥赛题目“预测猪的体重”就是一个非可计算的问题,因为该问题无法通过计算或算法求得准确的答案。
33.
@Curtion,一个经典的无法判断算法是否会停止的例子是哈尔滨师范大学逻辑学家和计算机科学家Shen氏提出的“打印自身”(Printing its own source code)程序。该程序在最初阶段打印出它自己的源代码,并在每一步中将其自身复制到一个新的文件中。这个过程可以一直持续下去,因为程序本身不包含任何明确的终止条件。因此,在某些情况下,程序可能永远运行下去,而我们无法预测它是否会停止。
34.
@QA,提出“Printing its own source code”的人是谁
35.
@Curtion,第一个在计算机程序中实现“Printing its own source code”(打印自身源代码)的程序员是美国计算机科学家Doug McIlroy。他在20世纪60年代开发了Unix操作系统中的一些常用工具,其中包括了一个名为"self"的程序,可以输出自己的源代码。这种功能后来被称为"Quine",成为了编程语言中的有趣练习和挑战之一。
36.
@QA,可以给我几个lambda演算的例子吗,和JS的代码对比
37.
@Curtion,当然可以!下面是一些lambda演算的例子,以及它们在JavaScript中相应的代码:
- 零元函数
Lambda演算:λ() . 5
JavaScript:() => 5
- 单变量函数
Lambda演算:λx . x + 3
JavaScript:(x) => x + 3
- 多变量函数
Lambda演算:λx y . x * y
JavaScript:(x, y) => x * y
- 函数应用
Lambda演算:(λx . x + 2)(3)
JavaScript:((x) => x + 2)(3)
- 函数组合
Lambda演算:(λf g x . f(g(x)))(λx . 2 * x, λx . x + 1, 3)
JavaScript:((f, g, x) => f(g(x)))(x => 2 * x, x => x + 1, 3)
希望这些例子能够帮助您更好地理解Lambda演算和JavaScript之间的关系。
38.
@QA,lambda演算写一个函数,这个函数有三个参数:f、a和b,比较f(a)和f(b)的大小,返回a和b中更大的值。
39.
@Curtion,这是一个使用lambda演算写的函数,比较f(a)和f(b)的大小,返回a和b中更大的值。
(λfab. if (f a) > (f b) then a else b)
其中,λfab
表示该函数有三个参数 f
、a
和 b
。if
是一个条件语句,如果 f a
大于 f b
,则返回 a
,否则返回 b
。