是否有可能构建一个相对快速的无类型 lambda 演算机?

2024-03-04

纯无类型 lambda 演算是一个强大的概念。然而,构建一台供现实世界使用的机器或解释器通常被描述为(接近)不可能。我想对此进行调查。理论上是否可以构建一个相对较快的无类型 lambda 演算机?

我所说的相对较快通常是指在相似数量的资源(门、操作、物理空间、电力使用等)内,可以与现代类图灵架构相媲美,用于相似的任务范围。

我对机器的实现和架构层没有任何限制,除了它必须在物理上并且以某种方式在某种程度上可以现实地实现。对于如何处理 IO 也没有限制。

  • 如果可能的话,主要挑战是什么?
  • 如果不可能,为什么以及如何?
  • 该领域的研究现状如何?
  • 哪些领域和主题最相关?

关于基于 lambda 演算的计算机体系结构的可行性,我们了解多少?

涉及类似领域的问题:

  • 函数式编程的机器模型 https://stackoverflow.com/questions/3968949/machine-model-for-functional-programming
  • 采用图灵机作为主要模型的历史原因 https://cstheory.stackexchange.com/questions/3650/historical-reasons-for-adoption-of-turing-machine-as-primary-model-of-computation

首先,即使在现有架构上,也可以将 lambda 演算有效地编译为机器代码。毕竟,scheme 是 lambda 演算加上一点额外的东西,并且可以高效地编译。然而,scheme & co 是严格求值下的 lambda 演算。还可以在非严格求值下高效地编译 lambda 演算!关于这一点,请参阅 SPJ 的两本书以了解一些背景知识:http://research.microsoft.com/en-us/um/people/simonpj/papers/papers.html http://research.microsoft.com/en-us/um/people/simonpj/papers/papers.html

另一方面,如果我们构建为函数式语言设计的硬件,我们可以将代码编译到该硬件上,并且确实做得很好。我所知道的最好的新东西是Reducer:http://www.cs.york.ac.uk/fp/reduceron/ http://www.cs.york.ac.uk/fp/reduceron/

Reduceron 的性能非常引人注目,其关键在于它是围绕并行图约简构建的,旨在利用 lambda 演算方程约简中明确的并行性机会。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有可能构建一个相对快速的无类型 lambda 演算机? 的相关文章

  • 在 Java 8 中,如何使用 lambda 将 Map 转换为另一个 Map

    我刚刚开始研究 Java 8 并尝试 lambda 我想我应该尝试重写我最近写的一个非常简单的东西 我需要将字符串到列的映射转换为另一个字符串到列的映射 其中新映射中的列是第一个映射中的列的防御副本 列有一个复制构造函数 到目前为止我最接近
  • 寻找一种重构 D3.js 风格的方法链接模式的方法

    在学习 D3 js 时 我遇到了博客文章 http bost ocks org mike chart 解释其可重用代码单元背后的主要设计模式 我复制了下面的相关代码 下面呈现的模式的方式正是在 D3 代码库和插件中使用的方式 example
  • Python 中的“lambda”是什么意思,最简单的使用方法是什么?

    您能否给出一个示例和其他示例来说明何时以及何时不使用 Lambda 我的书给了我一些例子 但它们很令人困惑 拉姆达 起源于拉姆达演算 http en wikipedia org wiki Lambda calculus和 AFAIK 首先实
  • 计算 python 字典/数组数据结构的非空尾叶 - 递归算法?

    我正在寻找一个函数来查找一种复杂字典 数组结构的所有非空端点 我认为因为我不知道嵌套数组的数量或它们的位置 所以它必须是递归的 而我只是还没有完全理解这种思维方式 所以对于嵌套字典 x top middle nested value nes
  • 我应该选择哪种函数式编程语言作为第一种函数式编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想学习一种函数式编程语言 以了解不同的编程范例 我的编程背景 Java 我刚刚通过了 SCJP 考试 一些 ruby 和非常有限的 Rails
  • Python 用 lambda 函数封闭作用域变量

    我写了这个简单的代码 def makelist L for i in range 5 L append lambda x i x return L 好的 现在我打电话 mylist makelist 因为稍后调用嵌套函数时会查找封闭范围变量
  • 如何在 Haskell 中获得列表的中间位置?

    我刚刚开始使用 Haskel 学习函数式编程 我正在慢慢度过Erik Meijer 在 Channel 9 的讲座 http channel9 msdn com shows Going Deep Lecture Series Erik Me
  • 根据标准在多个需求之间分配数量

    我正在创建一个周期盘点表 表 1 将是用户输入 其中将放置找到的材料和数量 表 2 是盘点时的库存快照 我希望将找到的材料数量分配到表 2 上的数量中 直到表 1 的数量用完为止 按照从最新批次 日期代码 到最旧批次 先进先出 的顺序分配数
  • python函数返回函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java:使用indexOf方法根据另一个数组对数组进行排序

    我想根据另一个数组 索引 的排序顺序迭代两个数组 A B 在本例中为 10 34 32 21 String A a b c d String B e f g h int indexes 10 34 32 21 为这里的坏例子道歉 我已经更新
  • 使用 LINQ 或 Lambda 从列表中删除实例?

    现在 我进入了一个阶段 将所有数据作为缓存 对象 中的列表获取 接下来要做的就是从列表中删除一些实例 通常 我会像这样删除 List
  • “System.Int32”类型的表达式不能用于返回类型“System.Object”

    我正在尝试制作一个简单的脚本系统 用于打印标签 我过去曾通过反射完成此操作 没有任何问题 但我现在尝试使用 Lambda 函数来完成此操作 以便可以缓存函数以供重用 到目前为止我的代码如下 public static string GetV
  • OCaml 作为 C 库,hello world 示例

    我希望通过 C 调用 OCaml 代码 方法是将 OCaml 编译为包含 C 接口的静态或共享库 这一页 https caml inria fr pub docs manual ocaml intfc html似乎解释了如何为 OCaml
  • 使用 lambda 作为模板参数时出现的编译器错误是什么?

    Edit 这已被报告为 Microsoft Connect 上的 VS2012 C 编译器错误 link https connect microsoft com VisualStudio feedback details 788426 vs
  • ASP.NET MVC 3 Razor DisplayFor 委托

    我收到此错误 模板只能与字段访问 属性访问 一维数组索引或单参数自定义索引器表达式一起使用 这是我的代码 自定义 HTML 帮助程序 包装 DisplayFor 以便我可以选择模板 public static string DisplayL
  • 中继命令和无参数执行方法

    我目前正在学习 WPF 和 MVVM 我想我已经了解了大部分内容及其工作原理 但我在使用 RelayCommand 或 DelegateCommand 时遇到了一些我不明白的问题 我认为这与代表的工作方式有关 请注意 下面的代码目前仅处于测
  • Android Studio:lambda 不起作用[重复]

    这个问题在这里已经有答案了 当尝试使用 lambda 表达式时 我遇到了一些 Gradle 构建错误 错误 41 100 错误 source 1 7 不支持 lambda 表达式 使用 source 8 或更高版本来启用 lambda 表达
  • 如何在 C# 中将 MemberExpression 实例组合为 LambdaExpression?

    给定一个这样的类 public class AnEntity public int prop1 get set public string prop2 get set public string prop3 get set 我能够生成一个
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式

随机推荐

  • 了解 Linux 内核调度程序

    我正在研究 Linux 内核 并试图弄清楚循环调度算法是如何工作的 在里面kernel sched rt c文件中 有一个方法叫做task tick rt定义如下 static void task tick rt struct rq rq
  • 如何使用 Chocolatey 非交互方式安装 VS Build Tools 2022 以及一些自定义安装选项?

    我想安装带有以下组件的 VS Build Tool 2022 NET Desktop Build Tools 排除 Net Framework 4 8 目 标包 Web 开发构建工具 Node js Build Tools 包括可选的 我目
  • 无法在 eclipse 中配置 Facebook SDK

    我根据facebook教程完成了关于如何配置facebook SDK的所有步骤 并且没有任何运气 还尝试了github配置 如图所示Eclipse 上的 Android Facebook SDK 配置 https stackoverflow
  • 在游戏结束场景中使用视图控制器

    我需要在碰撞检测后为我的应用程序制作一个结束屏幕 使用按钮使结束屏幕返回主菜单 游戏的最简单方法是什么 我可以使用ViewController 我读过很多教程 视频以及这里的所有帖子 这是我当前的代码 并非全部 只是一些重要的事情 impl
  • 如何更改反应中道具的值?

    如何改变props的值 如何setProps 假设this props contact name的值是John 我想把它改成Johnny 我怎样才能做到这一点 例如 changeValue this props contact name J
  • 使用 Apache Superset API 提供数据集

    我想了解是否可以使用 Superset API 填充 Superset 数据集 我浏览了文档 https superset apache org docs rest api我感觉我们不能像上传 CSV 文件那样做到这一点 我知道另一种可能性
  • 在 html 文档中标记文本

    假设我有以下标记 h1 Some title h1 p First paragraph p p Second paragraph p 我需要标记文本的某些部分 即 第一段第二段 它看起来像这样 h1 Some title h1 p F p
  • 确定图像相对于页面顶部的位置

    我有 2 张图像需要稍微重叠 我的第一张图片是 logo png 第二张图片是 form png 我的html是 div img src images logo png align left div div img src images f
  • gnuplot - 将字符串变量转换为小写

    如何在 gnuplot 中将字符串转换为小写 这是一个 gnuplot 字符串处理问题 示例 我希望在 gnuplot 脚本中检查用户输入的参数 if tolower ARG2 ohms 因此接受 ohms Ohms 或 OHMS 首选是不
  • 整数除以 3 最快的方法是什么?

    int x n 3 lt make this faster for instance int a n 3 lt normal integer multiplication int b n lt lt 1 n lt potentially f
  • 使用 Python 删除所有 DynamoDB 项目

    如何使用 python boto3 删除 DynamoDB 中的所有项目 我正在尝试这样做 scan table scan with table batch writer as batch for each in scan Items ba
  • J2ME开发不用Java?

    我正在第一次涉足 J2ME 世界 我更喜欢使用函数式语言来进行开发 Scala 曾经支持 CLDC 但已不再维护 Bigloo似乎消失了 解释器 例如 Jython 是不行的 因为 J2ME 应用程序必须很小 至少我的应用程序必须很小 我想
  • GCov可以在windows下使用吗?

    我可以在 Windows 中安装 gcov 工具吗 或者我可以在windows下的eclipse中使用这个工具的插件吗 我对这个工具很陌生 我对这个工具没有任何想法 请帮我获取这个工具的信息 请告诉我在我的机器上运行此工具的要求 我在哪里可
  • YouTube IFRAME 与 YouTube Android 播放器 API

    我计划在我的 Android 应用程序中安装 YouTube 播放器 并找到了两种替代方案 框架API https developers google com youtube iframe api reference或与YouTube An
  • 如何将 Heroku 应用程序链接到私人 Github 存储库?

    我是 Heroku 的新手 我不熟悉部署 管道的用语 我已经安装了 Heroku CLI 并使用以下命令部署了一个应用程序 run heroku create myNewHerokuApp 我的实例现已制作完毕 我在 Github 上有一个
  • 页面部分回发后如何在 UpdatePanel 中保持焦点位置

    我在带有更新面板的页面中有四个控件 最初 鼠标焦点设置为第一个控件 当我将页面部分回发到服务器时 焦点会自动从我按下 Tab 键的控件的最后一个焦点控件移动到第一个控件 有什么办法可以保持最后的焦点吗 看一眼使用自动回发控件在更新面板中恢复
  • 在 Webpack + VueJs 中链接样式表和要求它们有什么区别?

    使用 VueJs 和 Webpack 组合 我发现要包含外部样式表 例如 bootstrap 您可以执行以下两种操作之一 在你的主 js 脚本中 你可能需要这样的样式表 require assets lib bootstrap min cs
  • textContent 与 insideText 之间的区别

    有什么区别textContent and innerText在 JavaScript 中 我可以用吗textContent如下 var logo document getElementsByClassName logo 0 logo tex
  • 如何解决模块中声明了包,但模块不读取它?

    我正在将我的开发环境迁移到另一台电脑 我使用NetBeans 10 打开JDK11 JavaFX 当我将主项目导入 NetBeans 时 出现以下错误 on import java util logging Level import jav
  • 是否有可能构建一个相对快速的无类型 lambda 演算机?

    纯无类型 lambda 演算是一个强大的概念 然而 构建一台供现实世界使用的机器或解释器通常被描述为 接近 不可能 我想对此进行调查 理论上是否可以构建一个相对较快的无类型 lambda 演算机 我所说的相对较快通常是指在相似数量的资源 门