Haskell - 是什么让“main”独一无二?

2023-11-24

有了这个代码:

main :: FilePath -> FilePath -> IO ()
main wrPath rdPath = do x <- readFile rdPath
                        writeFile wrPath x

我收到以下错误:

Couldn't match expected type 'IO t0'
            with actual type 'FilePath -> FilePath -> IO()

但是当我将“main”的名称更改为其他名称时,该文件可以正确编译。

main 有什么独特之处以及为什么它的类型必须是IO t0?


因为语言规范says so.

Haskell 程序是模块的集合,按照惯例,必须调用其中一个模块Main并且必须导出该值main。程序的值就是标识符的值main在模块中Main,它必须是类型的计算IO t对于某些类型t(见第 7 章)。当程序执行时,计算main被执行,其结果(类型t)被丢弃。

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

Haskell - 是什么让“main”独一无二? 的相关文章

  • 最小数据类型 - 我可以定义一位变量吗? [复制]

    这个问题在这里已经有答案了 我只需要一位来表示我的数据 1 或 0 在 C 中这样做的最佳方法是什么 正常 数据类型太大 你可以创建 typedef struct foo unsigned x 1 foo 你告诉编译器你只会使用一位x 但是
  • 为什么在 haskell 中不带括号不可能进行负数相乘

    乘法5 3在 haskell gchi 中给了我一个错误 但乘以5 3 工作正常 为什么需要括号 ghci GHCi version 7 4 1 http www haskell org ghc for help Loading packa
  • 如何以编程方式检查类型是结构还是类?

    如何以编程方式检查类型是结构还是类 Use Type IsValueType http msdn microsoft com en us library system type isvaluetype aspx 获取一个值 该值指示 Typ
  • 当给定部分限定类型名称时,Type.GetType 如何工作?

    在很多地方我都遇到过以下形式的部分限定类型名称FullTypeName AssemblyName 即像Type AssemblyQualifiedName仅没有版本 区域性和 publicKeyToken 限定符 我的问题是如何将其转换为相
  • 类型定义:期望UnionAll,得到TypeVar

    在 v0 6 的 Julia 手册中 我发现以下内容 abstract type Pointy T end struct Point T lt Pointy T x T y T end 这工作得很好 我认为以下也应该 abstract ty
  • 数据记录的类约束

    我有一个data type data BuildException a KillBuild JobID a Stage FailBuild JobID a Stage CancelBuild JobID a Stage StopBuild
  • 追踪 Haskell 中的错误

    我如何获得有关 Haskell 错误发生位置的更多信息 例如 昨天我正在开发一个 Haskell 程序 该程序解析输入文件 转换数据 然后打印出报告信息 有一次 我跑了 main 然后回来了 Prelude read parse error
  • 静态成员函数中的封闭类的 C++ 类型

    我认为这是完全不可能的 但如果呢 在任何版本的 C 中 是否有可能以某种方式获取静态成员函数中封闭类的类型 class Impossible public static void Fun typedef Impossible Enclosi
  • Haskell 中的纯函数是否有可能改变变量的本地副本?

    Haskell 中的纯函数是否有可能改变变量的本地副本 就像 clojure 中提到的那样函数式编程是一个骗局 http swannodette github io 2013 06 10 porting notchs minecraft d
  • Java 中更高级的泛型

    假设我有以下课程 public class FixExpr Expr
  • N 个指向函数的指针数组,返回函数指针

    这是面试时问我的 我真的很困惑 如何声明一个 N 数组 指向函数返回的指针 指向函数返回的指针 指向字符的指针 有人可以帮忙吗 Typedef 是为懦夫准备的 这里有一个简单 机械的方法来计算复杂的声明 a a a N is an N el
  • 如何重置/清除文件输入

    我从输入类型 文件重置图像文件时遇到了这个问题 这就是场景 我设置了一个图像 然后单击 取消 按钮 这意味着它被重置 然后我将再次设置相同的图像 它不会设置 我不知道为什么 但我认为这是一个错误 这是我用于重置图像 表单的代码 resetI
  • 从 SQL 数据库反序列化数据

    我有一个小应用程序 由数据库支持 SQLite 但它与问题并不真正相关 我定义了一些类型 例如 data Whatever Whatever Int Int String String data ImportantStuff Importa
  • 获取表达式类型的宏

    Question 我正在尝试编写一个 C 宏 它需要type or type name作为输入 并给出type作为输出 例如 REMOVE NAME int 应该int REMOVE NAME int aNumber 也应该是int 我设法
  • 将 libssh 与静态库 (libssh.a) 链接

    我试图将我的程序与 libssh 静态库链接 以下是我从 libssh 教程复制的简单代码 sshtest c define LIBSSH STATIC 1 include
  • 我可以捕获 RUN-MAIN 中使用的例程的返回值吗?

    我想要一个脚本来运行从模块导出的子例程 并将导出的子例程作为脚本中的 MAIN 运行 该子例程执行了我想要的所有操作 只是它返回结果而不是打印结果 运行主程序seems实现我的大部分目标 但我不确定如何获取例程的返回值 有没有办法可以捕获要
  • 如何从键盘读取与输出在同一行的字符串? [复制]

    这个问题在这里已经有答案了 我正在读这样的字符串 print Input string let string String String new std io stdin read line mut string 当我启动该程序时 我看到
  • 无法构建 lldb - 找不到“原子”文件

    我正在尝试建立lldb这是 Clang LLVM 3 4 2 下载的一部分LLVM 下载页面 http llvm org releases download html 我可以构建 LLVM Clang Compiler RT 和 Extra
  • “引用透明”IO 调用的可重入缓存

    假设我们有一个 IO 操作 例如 lookupStuff InputType gt IO OutputType 这可能是一些简单的事情 例如 DNS 查找 或者针对时不变数据的某些 Web 服务调用 我们假设 该操作永远不会抛出任何异常和
  • 允许方法签名中存在子类型的特征

    如何在继承特征中定义的方法中强制执行子类型 我要在 中放置什么 以下 trait Organism def reproduce org Bool class Amoeba extends Organism def reproduce org

随机推荐

  • 如何在 Javascript 中获取对象在页面上的绝对位置? [复制]

    这个问题在这里已经有答案了 我想在 Javascript 中获取页面上对象的绝对 x y 位置 我怎样才能做到这一点 I tried obj offsetTop and obj offsetLeft 但这些仅给出相对于父元素的位置 我想我可
  • 全屏通知

    我想创建一个全屏通知 我使用以下代码实现了通知 我需要进行哪些更改才能使其成为全屏通知 private void showNotification String data Intent i new Intent this MapsActiv
  • jQuery 中方法链的缺点和优点是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 jQuery 中方法链的缺
  • 如何将PostgreSQL 9.4的jsonb类型转换为float

    我正在尝试以下查询 SELECT json data gt position gt lat 1 0 AS lat FROM updates LIMIT 5 1 0只是为了强制转换为浮点数 我的实际查询要复杂得多 这个查询只是问题的测试用例
  • 有没有办法检查 ssm send_command 是否正常运行?

    我目前正在尝试使用 python 和 boto 在我的 ec2 实例上远程运行脚本 但我无法判断我是否调用send command工作正常 截至目前我的代码看起来像 ec2 boto3 client ssm region name us e
  • 将视频流式传输给一位用户并接收来自该用户的音频

    我的要求 我想用我的智能手机向一个人 Larix 流式传输并获取该人的音频 延迟应尽可能低 质量尽可能高 我想将整个事情托管在我的服务器上 最好的方法是什么 我尝试过SRS 质量高 延迟低 但我不知道如何从对方那里获取音频 SRT 也是一种
  • Swift Sliceable 上的递归

    我觉得我一定错过了一些明显的东西 将列表分解为头部和尾部 然后在尾部递归是一种标准的函数式编程技术 但我正在努力做到这一点SliceableSwift 中的类型 我有一个遵循以下模式的递归函数 func recurseArray arr I
  • PHP内置服务器无法cURL

    我有一个相对简单的脚本 如下所示
  • Asp.Net core MVC6 如何在 Identity 3 中初始添加角色

    我在 Stackoverflow 中找到了这个 到目前为止似乎有很多关于在 Identity 中添加角色的问题1 2但在 身份3 中却有所不同 我想在数据库中播种角色 我只有两个 我打算使用已注入类中的 roleManager 没关系 我的
  • 有什么建议可以改进我的 PDO 连接类吗?

    我对 pdo 还很陌生 所以我基本上只是使用我正在阅读的介绍性书籍中的信息组合了一个简单的连接类 但这种连接有效吗 如果有人有任何有用的建议 我将非常感激 class PDOConnectionFactory public con null
  • 如何使用 RegEx 来选择最长的匹配项?

    我尝试寻找这个问题的答案 但找不到任何东西 我希望有一个简单的解决方案 我在 C 中使用了以下代码 String pattern hello hello world Regex regex new Regex pattern RegexOp
  • 需要减少expressjs中某个路由的超时时间

    在expressjs中 有一种方法可以设置每个路由的超时限制 我有一些路线可能需要 30 45 秒才能处理 大量任务 然后是其他路线 如果花费的时间超过 5 秒 我希望它超时 我想我问是否有一种方法可以全局设置请求的超时限制 并且有没有一种
  • 有没有办法检查Python中的函数是否递归?

    我想为练习编写一个测试函数 以确保函数正确实现 所以我想知道 有没有一种方法 给定一个函数 foo 来检查它是否是递归实现的 如果它封装了一个递归函数并使用它 它也算在内 例如 def foo n def inner n more code
  • Pandas 发现交叉值中的重复项

    我有一个数据框 想要消除具有相同值但在不同列中的重复行 df pd DataFrame columns a b c d index 1 2 3 df loc 1 pd Series a x b y c e d f df loc 2 pd S
  • Pentaho 数据集成无法在新的 Mac M1 上启动

    当我尝试在 Mac bigSur M1 上运行 Pentaho Data Integration 时遇到问题 问题代码如下 I m sorry this Mac platform arm64 is not yet supported Ple
  • UIImage 和 ressizedImageWithCapInsets Swift

    我是 Swift 的 Apple 新手 我读过一篇文章Here 但不知道如何做这样的事情 或者只是简单不知道如何使用resizableImageWithCapInsets与斯威夫特 请帮我使用resizableImageWithCapIns
  • 绝对 xpath 和相对 xpath 有什么区别? Selenium 自动化测试中哪个是首选?

    绝对 xpath 和相对 xpath 有什么区别 Selenium 自动化测试中哪个是首选 我正在使用 Selenium 和 Robot 框架准备测试脚本 绝对Xpath 它使用从根元素到期望元素的完整路径 相对Xpath 您可以简单地从引
  • 如何将 Maven 站点部署到 Artifactory?

    我们是从一个非常古老的 Artifactory 已有 6 7 年历史 升级而来的 当时 由于空间限制 部分存储库不是由 Artifactory 处理 而是通过 Apache httpd 服务器通过 HTTP 提供服务 通过 Apache h
  • Lua:仅当表中尚未存在时添加到表中或删除重复项的最智能方法

    我有一张字符串表 我想要一种简单的方法来删除表中的所有重复项 所以如果表是 a b c c d e e 经过此操作后将是 a b c d e 或者 也许更好的是 有一种方法可以将元素添加到表中 但前提是该元素尚未包含在表中 我通常为此做的是
  • Haskell - 是什么让“main”独一无二?

    有了这个代码 main FilePath gt FilePath gt IO main wrPath rdPath do x lt readFile rdPath writeFile wrPath x 我收到以下错误 Couldn t ma