热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么我们需要IO?

如何解决《为什么我们需要IO?》经验,为你挑选了1个好方法。

在"解决尴尬的小队:Haskell中的monadic输入/输出,并发,异常和外语调用"中,SPJ指出

"也许函数程序可以是将输入字符串映射到输出字符串的函数:

main :: String - > String

现在用(gasp!)C编写的'包装器'程序可以从某处获取输入字符串..将函数应用于它,并将结果存储在某处......"

然后他继续说这在包装器中定位"罪恶",并且这种方法的问题在于一个罪导致另一个(例如多个输入,删除文件,打开套接字等).

这对我来说似乎很奇怪.我本以为Haskell在以这种方式接近时会是最强大的,甚至可能是最有用的.也就是说,输入是位于文件中的字符串,并且输出是新文件中的新字符串.如果输入字符串是与数据连接的某个数学表达式,并且输出字符串是(非Haskell)代码,那么您可以完成Get Things.换句话说,为什么不总是将Haskell程序视为翻译?(或者作为编译器,但作为翻译器,您可以将真正的IO混合到最终的可执行文件中.)

无论作为一般策略的智慧如何(我欣赏我们可能想要完成的一些事情可能不是从数学开始),我真正的问题是:如果这确实是方法,我们可以避免IO类型吗?我们需要其他语言的包装器吗?有人真的这样做吗?



1> Carl..:

关键是这String -> String是一个相当差的模型,一般是什么程序.

如果您正在编写一个接受并发流水线请求的http服务器并同时响应每个管道,同时还要交错管道中的响应写入以及下一个请求的读取,该怎么办?这是http服务器工作的并发级别.

也许,只是也许,你可以把它塞进一个String -> String程序.您可以将管道多路复用到单个通道中.但超时怎么样?Web服务器超时连接,以防止慢速loris攻击.你怎么会考虑到这个?也许你的输入字符串有一系列定期添加的时间戳,无论其他输入如何?哦,但接收者只能通过滴漏从接收缓冲区中读取的变体呢?你怎么能告诉你被阻塞等待发送缓冲区流失?

如果你追求所有潜在的问题并将它们填充到一个String -> String程序中,你最终会得到几乎所有存在于haskell程序之外的服务器的有趣部分.毕竟,必须要做多路复用,必须做错误检测和报告,必须做超时.如果你在Haskell中编写一个http服务器,那么如果它实际上是用Haskell编写的话会很好.

当然,这并不意味着IO当前存在的类型是最好的答案.可以提出合理的投诉.但它至少可以让你解决Haskell中的所有问题.


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
北京草舞945share
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有