方案如何返回多个值?

2024-05-11

我注意到几乎所有方案函数只能返回一个列表作为输出。

下面,我想返回邻居的所有相邻节点的多个值。

 (define (neighbors l w)
   (if (and (= 1 l) (= 1 w))
     (list (and (l (+ 1 w))) (and (+ 1 l) w)))) ; how to output 2 or more values?

在这种情况下,我首先测试节点是否位于角点,如果是,则返回 2 个坐标值,其中 (l 和 w+1)、(l+1 和 w) 基本上如果我位于 (1,1 )返回我(1,2)和(2,1)

当节点在边缘附近只有 1 个邻居时,同样适用,在这种情况下,我将有 3 个值。

当附近没有边缘时,我将有 4 个返回值。

我尝试使用cons, append, list, display, write他们似乎都没有使用额外的价值。我需要这个作为子功能这个问题 https://stackoverflow.com/questions/1575891/question-on-scheme-with-best-first-search-algorithm。我应该如何实现它,以便我可以传递返回值并递归地使用它来返回所有相邻节点?

Edit:我找到了答案:使用关键字“values" 返回多个值。示例:

(define (store l w)
  (values (write l)
          (write w)
          (newline)
          (list (+ 1 w) l)
          (list w (+ 1 l))))

值、连续传递样式和列表至少是三种返回多个值的方式:

(import (rnrs))


; let-values + values
(define (foo1)
  (values 1 2 3))

(let-values (((a b c) (foo1)))
  (display (list a b c))
  (newline))

; cps
(define (foo2 k)
  (k 1 2 3))

(foo2 (lambda (a b c) 
        (display (list a b c))
        (newline)))

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

方案如何返回多个值? 的相关文章

  • 方案单词列表 eq?

    我有一个问题 我需要查找列表是否等于第二个列表 例如 set eq 1 2 3 1 2 3 gt t set eq 1 2 3 2 3 4 gt f 这些例子在我的程序中是正确的 但这个例子不是 set eq quote quote one
  • Javascript 中嵌套函数的返回值[重复]

    这个问题在这里已经有答案了 我有一个设置如下的函数 function mainFunction function subFunction var str foo return str var test mainFunction alert
  • C++ 中将值作为常量、引用和常量引用返回有何含义?

    我正在学习C 但我仍然对此感到困惑 在 C 中将值作为常量 引用和常量引用返回有何含义 例如 const int exampleOne int exampleTwo const int exampleThree 以下是您所有案件的内幕 通过
  • 按方案中的第一个元素对列表列表进行排序

    例如 我正在研究按第一个元素对列表列表进行排序 排序 列表 2 1 6 7 4 3 1 2 4 5 1 1 预期输出 gt 1 1 2 1 6 7 4 3 1 2 4 5 我使用的算法是冒泡排序 我修改了它来处理列表 但是 该代码无法编译
  • 为什么我的 Scheme 函数返回错误“应用程序:不是过程”?

    我想获得 a b c 的第二个值 但我不想使用 cadr 我可以得到正确的答案 car cdr a b c b 但是当我构建该函数时 define test lambda list car cdr list test a b c 我收到以下
  • 传递给过程的列表转换为过程内列表的列表

    我正在 DrRacket 上调试这段代码 lang racket define last element on list lambda l cond null l null cdr l car l else last element on
  • 防止 PowerShell 将值类型包装在 PSObject 中

    我有一个使用大量委托的 NET API 我的 API 有几个类似于以下的方法 public static class MyClass public static void DoSomethingWithString Func myFunc
  • 访问Scheme中的调用堆栈深度

    为了演示尾递归的有效性 我想要一种在Scheme中动态访问调用堆栈深度的方法 有没有办法做到这一点 如果没有 有没有办法在其他主要函数语言 OCaml Haskell 等 中做到这一点 Racket 允许您在调用堆栈中存储值 您可以使用它来
  • CMake:如何在多个文件上运行自定义命令来生成源文件?

    我有以下情况 我想编译一些Scheme文件Gambit https github com gambit gambit成可执行文件 为此 我使用 gambit 将所有计划文件翻译 生成为 C 和目标文件 然后将其编译并链接为可执行文件 假设我
  • Racket 中的“match”可以具有带有来自外部作用域的变量的模式吗?

    考虑以下示例 lang racket match cat doge a b match b a t f Not a pair 如果我想匹配头部和尾部相同的对 我可能会这样写 但这不起作用 因为第二个a被绑定为一个新变量 并且匹配任何内容 是
  • 大括号 {} 替换 Racket 中的“开始”

    是否可以有一个宏 使用大括号 来表示一个语句块 从而替换 begin 关键字 因此 代替 if condition begin statement1 statement2 statement3 statement4 else stateme
  • Scheme 和 Racket 中嵌套引号的行为

    在 Racket 中编写函数时 我不小心在符号前面放了两个单引号而不是一个 即我不小心写了 a 并发现嵌套引号的一些行为看起来很奇怪 我正在使用 DrRacket 并使用 Racket lang 和 R5RS lang 对此进行了测试 wr
  • 从when语句内的函数返回

    我想做的就是使用 when 语句返回一个值 我想要以下功能 if x return y 我正在尝试使用 when x y 但是when语句并没有以退出函数并返回y的方式进行计算 它只是愉快地继续下一行 有没有办法做到这一点而不需要制作一个看
  • 在Racket中将结构递归转化为累积递归

    我有一些代码来查找最大高度并将其替换为关联的名称 身高和姓名有单独的列表 每个列表的长度相同且非空 我可以使用结构递归来解决这个问题 但必须将其更改为累积递归 而且我不确定如何做到这一点 我见过的所有例子都让我困惑 有人能够将代码变成使用累
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • 为什么Racket中foldl的定义方式很奇怪?

    在 Haskell 中 与许多其他函数式语言一样 函数foldl被定义为 例如 foldl 0 1 2 3 4 10 这没关系 因为foldl 0 1 2 3 4 根据定义 0 1 2 3 4 但是 在 球拍 中 foldl 0 1 2 3
  • Scheme (Lisp) 中树的深度反转

    我对Scheme中的基本树数据结构进行了深度逆向 define deep reverse t cond null t not pair t t else cons deep reverse cdr t deep reverse car t
  • Python 宏:用例?

    如果 Python 有一个类似于 Lisp Scheme 的宏工具 比如元Python https code google com p metapython 你会如何使用它 如果您是一名 Lisp Scheme 程序员 您会使用宏来做什么
  • 将数字转换为英文字母列表

    我有下面的函数 它将数字输入转换为这些数字的部分翻译的单词输出 使用乘积和商 它将数字的单词表示相加 同时将数字分组 例如 number name 87969087 gt 87 million 969 thousand 87 number
  • 如何使用 DrRacket 遵循 SimplyScheme 书籍

    我希望能够操纵句子 以便我可以将它们作为输入并根据单个字母等内容返回输出 例如 ends e 命令将返回所有以 e 结尾的单词 ends e only the good die young gt the die 不幸的是 e 是一个字符串

随机推荐

  • 继承接口方法的重新实现

    我不完全理解如何使用接口 所以我必须问 我使用 BaseClass 它实现了 IBaseClass 接口 这些接口仅包含一个声明 public interface IBaseClass void Refresh 所以我在我的 Basecla
  • 如何在一对一关系上使用 onDelete: 'CASCADE'

    当用户被删除时 我尝试删除用户的个人资料 但它并没有删除个人资料上的任何内容 用户实体 Entity export class User PrimaryGeneratedColumn id number Column name string
  • MySQL:如何获取上次更新的更改

    我正在使用 MySQL 和 PHP 开发数据库应用程序 此时我正在尝试获取上次更新引起的更改 我解决问题的第一个方法是 使用 SELECT 获取 旧 状态 使用 UPDATE 进行更改 使用 SELECT 获取 新 状态 将数组与 php
  • 从其 BlobKey 获取 Google Cloud Storage 文件

    我编写了一个 Google App Engine 应用程序 它利用 Blobstore 来保存以编程方式生成的数据 为此 我使用了文件API https developers google com appengine docs java b
  • 使用合并适配器;寻找一种方法来确定 ListActivity onListItemClicked 方法中列表项的数据类型

    我使用 MergeAdapter 创建一个分段列表 其中列表的每个部分都包含不同类型的基础数据 一切都按预期进行 然而 在确定所选列表项背后的数据类型时 ListActivity 的 onListItemClicked 方法似乎比应有的更复
  • 在 Visual Studio 中方法的返回行上检查函数的返回值

    我有一行这样的代码 return foo barIn 如果我在该行上放置一个断点 我可以检查 foo barIn 的返回值而不单步执行 foo 吗 我可以将代码重写为 var result foo barIn return result 但
  • 如何从 SQL Server 中的存储过程检索参数列表

    使用 C 和 System Data SqlClient 有没有办法在实际执行 SQL Server 上的存储过程之前检索属于该存储过程的参数列表 我有一个 多环境 场景 其中同一数据库模式有多个版本 环境的示例可能是 开发 暂存 和 生产
  • 如何在 mac 中使用“getopt”命令让 bash 处理长参数?

    我想让我的 bash 脚本处理长参数 我发现getopt 但 OS X 不支持它 谁能告诉我为什么getoptBSD 实现了 GNU 没有实现 我尝试构建getopt在 GNU C lib 中 但由于我对 Linux 的技能不佳而失败了 有
  • Python Bokeh HoverTool 格式化程序错误:“HoverTool 出现意外的属性‘格式化程序’”

    我使用jupyter笔记本做了可视化的练习 然后我按照代码进行操作http docs bokeh org en latest docs user guide tools html basic tooltips http docs bokeh
  • Laravel 5.4 密码重置

    我有一个 Laravel 5 4 应用程序 我的管理区域中有一个视图 允许我查看所有用户 我想创建一个功能 允许我单击后端的按钮 自动发送默认 Laravel 密码重置功能的过程 在我看来 我有以下几点 table class table
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 内容脚本中的 Firefox SDK 访问首选项

    About 我正在使用 Firefox Add on SDK 开发 Firefox Add on 该附加组件将是特定于站点的 并将根据用户偏好隐藏某些元素 几年前我已经制作了这个附加组件 但使用新的 SDK 后 事情的工作方式有点不同 Co
  • 我希望能够使用 lambda 表达式来指定要通过 wcf 服务返回的值范围

    我不知道这是否可能 但这会很酷 问题是这是否可能 但如果可能的话 举一个例子 我不确定您将使用什么方法签名来将 lambda 表达式传递到其中 例如方法IList
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • NFC标签唯一ID

    我正在开发一个包括 NFC 标签和 Android 手机的系统 使用 NFC 标签的唯一 ID 但不知道4种NFC标签之间有什么区别 我发现了这个 兼容 NFC 的标签可以采用以下技术 标准 他们每个人都有不同的 ID 概念 NFC Tag
  • SoundEffect 和 SoundEffectInstance 类之间的区别

    就像有问题一样 我不明白使用这些类有什么区别 每个类别的优点和局限性是什么 我读了很多教程 但仍然无法决定我应该做什么 为了让事情更清楚 我得到了 AudioModule AudioEmitterComponent 和 AudioListe
  • 如何从spark管道逻辑模型中提取变量权重?

    我目前正在尝试学习 Spark Pipeline Spark 1 6 0 我将数据集 训练和测试 导入为 oas sql DataFrame 对象 执行以下代码后 生成的模型是oas ml tuning CrossValidatorMode
  • 如何在 Rails 2.3.5 中从模型渲染部分

    我有一个 Rails 2 3 5 应用程序 我试图从模型中渲染几个部分 我知道 我知道 我不应该这样做 我这样做的原因是我将 Comet 服务器 APE 集成到我的 Rails 应用程序中 并且需要根据模型的事件 例如 after crea
  • 方案如何返回多个值?

    我注意到几乎所有方案函数只能返回一个列表作为输出 下面 我想返回邻居的所有相邻节点的多个值 define neighbors l w if and 1 l 1 w list and l 1 w and 1 l w how to output