首页 \ 问答 \ Scheme中可变参数映射函数的实现(Implementation of variadic map function in Scheme)

Scheme中可变参数映射函数的实现(Implementation of variadic map function in Scheme)

正如你在下面的例子中看到的,Scheme中的map函数是可变参数函数。

> (map (lambda (number1 number2)
     (+ number1 number2))
   '(1 2 3 4)
   '(10 100 1000 10000))
'(11 102 1003 10004)

我想实现这个可变参数选项,但我只能成功找到两个参数映射实现:

(define (map f lst)
   (if (null? lst)
       '()
       (cons (f (car lst)) (map f (cdr lst)))))

有人可以帮助我实现可变地图功能吗?


As you can see in the example below, map function in Scheme is variadic function.

> (map (lambda (number1 number2)
     (+ number1 number2))
   '(1 2 3 4)
   '(10 100 1000 10000))
'(11 102 1003 10004)

I want to implement this variadic option, but I only succeeded to find the two arguments map implementation:

(define (map f lst)
   (if (null? lst)
       '()
       (cons (f (car lst)) (map f (cdr lst)))))

Can someone help me implement variadic map function?


原文:https://stackoverflow.com/questions/21629203
更新时间:2024-02-06 09:02

最满意答案

没有。

当您收到一条消息( recvmsg() )时,会通知您发送消息的对等方的IP地址; 当您响应( sendmsg() )时,您指定消息所到达的IP地址。 这是通过一个套接字完成的。 另见<sys/socket.h>


No.

When you receive a message (recvmsg()), you are told the IP address of the peer that sent the message; when you respond (sendmsg()), you specify the IP address to which the message goes. This is done over a single socket. See also <sys/socket.h>.

相关问答

更多
  • 我假设你发布的函数应该在客户端和服务器之间共享。 他们需要稍加修改才能实现这一目标。 例如,在服务器端, recvudp应返回客户端地址(可能作为out参数),因为稍后需要将消息发送回它。 此外,由于客户端地址结构已经填满(在服务器端recvudp或在客户端手动),我们可以将它传递给sendudp作为其参数。 我已经玩了这个,并在Visual Studio 2010中创建了两个简单的项目:UDP服务器和客户端。 它们都使用上面提到的共享功能。 此代码远非完美,仅旨在显示基本的UDP套接字通信。 Shared ...
  • UDP(a)中的connect()函数告诉UDP在哪里发送所有数据报,因此您可以使用send()而不是sendto() ,并且(b)充当传入数据报的过滤器,因此您可以使用recv()而不是recvfrom() 。 它在网络上没有做任何事情:它只是一个本地操作。 它总是返回零,因为它不会失败。 但是,发送到不存在的目标可能会失败... 这些都记录在案。 The connect() function in UDP (a) tells UDP where to send all datagrams, so you ...
  • 如果您没有获得任何流量,它可能只是被防火墙阻止。 在这种情况下,它不是关于转发,而是关于打开端口。 一旦通过NAT打孔,大多数(如果不是全部)NAT /防火墙设备将允许双向UDP流量。 也就是说,如果我的笔记本电脑位于NAT /防火墙后面,将UDP数据包发送到Internet,我的NAT /防火墙将允许将UDP流量返回到原始端口号。 我使用UDP工作很多,我的经验是这是规则,很少有例外。 请记住,虽然不保证传送UDP数据包。 您的客户端是否支持NAT? 客户端发送的任何数据包都会到达服务器吗? 服务器中的问 ...
  • 没有。 当您收到一条消息( recvmsg() )时,会通知您发送消息的对等方的IP地址; 当您响应( sendmsg() )时,您指定消息所到达的IP地址。 这是通过一个套接字完成的。 另见 。 No. When you receive a message (recvmsg()), you are told the IP address of the peer that sent the message; when you respond (sendmsg()), you sp ...
  • 第一步是尝试硬编码另一台计算机的ip并进行测试。 如果可行,那么请查看添加UDP广播发现。 这是java中的一个例子: http : //michieldemey.be/blog/network-discovery-using-udp-broadcast/ 这个想法是所有需要在UDP上进行通话的设备。 一旦他们听到广播,他们需要连接到彼此。 通常,一方需要预先确定为服务器,另一方需要作为客户端。 The first step is to try and hardcode the ip of the othe ...
  • 是的,这没问题,是处理双向通信最方便的方法。 此外,如果客户端位于NAT后面,则打孔需要正常工作。 即使您绑定到客户端上的相同IP和端口,也不能保证在NAT中获得相同的映射。 因此,服务器可能无法访问客户端。 请记住,这些映射超时并从NAT网络内部启动,因此如果客户端长时间处于空闲状态,可能需要进行一些探测。 这取决于您如何设计应用程序,但这样做没有问题。 只需使用例如select监视套接字的读写状态即可。 如果创建一个与读/写队列结合的非阻塞套接字,则确保永远不会阻止操作。 由于UDP要么全部写入,要么什 ...
  • 错误说你有一个无效的参数。 在阅读你的代码时,我可以说冒犯的参数是IP地址: 你将你的套接字绑定到127.0.0.1 您尝试将数据发送到另一个网络上的 192.0.0.1 如果要将数据发送到IP地址为192.0.0.1的主机,请将此套接字绑定到同一网络上的本地网络接口,或者在可找到到192.0.0.1的路由的网络上 如果我将套接字绑定到192.168.56.x (x是本地地址),我可以将数据发送到192.168.56.y (y是地址服务器); 但如果我绑定到127.0.0.1我得到IllegalArgume ...
  • 我没有看到整个代码,但我猜服务器和客户端是两个不同的可执行文件,并且ClientAnswerStruct类在两侧都定义了两次 。 当接收器对数据进行反序列化时,它会尝试重建一个ClientAnswerStruct对象,但找不到它的定义(注意它是在发送端定义的,虽然在接收端有一个名为ClientAnswerStruct的类,但它们并不相同) 。 这样做的正确方法是在独立类库中定义ClientAnswerStruct类,并让服务器和客户端代码包含它(C#术语中的“添加引用”)。 I didn't see the ...
  • 不,浏览器不支持UDP。 此外,WebAssembly没有任何用于通信的API - 通过将JavaScript函数公开给WebAssembly模块来访问您必须执行此操作的任何网络API。 我认为您唯一的选择是使您的UDP消息适应WebSocket。 有商业产品可以做到这一点,例如Kaazing网关( https://kaazing.com/ ),可能有开源替代品。 No, browsers do not support UDP. Also, WebAssembly doesn’t have any APIs ...
  • 单个插槽无法实现这一点。 根据定义,UDP套接字只能绑定到单个端口。 这就是这些插座的工作原理。 但是,您可以打开两个插槽。 然后,可能使用两个接受线程,可能使用其他机制(POSIX select )检测到这些线程的连接。 如何兼顾多个侦听UDP套接字取决于您的编程语言/套接字抽象。 That's not possible with a single socket. By definition, UDP sockets can only bind to a single port. That's how t ...

相关文章

更多

最新问答

更多
  • h2元素推动其他h2和div。(h2 element pushing other h2 and div down. two divs, two headers, and they're wrapped within a parent div)
  • 创建一个功能(Create a function)
  • 我投了份简历,是电脑编程方面的学徒,面试时说要培训三个月,前面
  • PDO语句不显示获取的结果(PDOstatement not displaying fetched results)
  • Qt冻结循环的原因?(Qt freezing cause of the loop?)
  • TableView重复youtube-api结果(TableView Repeating youtube-api result)
  • 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
  • SQL Server 2014版本支持的最大数据库数(Maximum number of databases supported by SQL Server 2014 editions)
  • 我如何获得DynamicJasper 3.1.2(或更高版本)的Maven仓库?(How do I get the maven repository for DynamicJasper 3.1.2 (or higher)?)
  • 以编程方式创建UITableView(Creating a UITableView Programmatically)
  • 如何打破按钮上的生命周期循环(How to break do-while loop on button)
  • C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
  • 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
  • 如何防止调用冗余函数的postgres视图(how to prevent postgres views calling redundant functions)
  • Sql Server在欧洲获取当前日期时间(Sql Server get current date time in Europe)
  • 设置kotlin扩展名(Setting a kotlin extension)
  • 如何并排放置两个元件?(How to position two elements side by side?)
  • 如何在vim中启用python3?(How to enable python3 in vim?)
  • 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
  • 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
  • Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
  • dedecms如何安装?
  • 在哪儿学计算机最好?
  • 学php哪个的书 最好,本人菜鸟
  • 触摸时不要突出显示表格视图行(Do not highlight table view row when touched)
  • 如何覆盖错误堆栈getter(How to override Error stack getter)
  • 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
  • USSD INTERFACE - > java web应用程序通信(USSD INTERFACE -> java web app communication)
  • 电脑高中毕业学习去哪里培训
  • 正则表达式验证SMTP响应(Regex to validate SMTP Responses)