Haskell调用函数onload

发布于 2024-12-23 02:34:45 字数 332 浏览 0 评论 0原文

各位程序员大家早上好!

我正在使用 haskell 开发一个项目,我想知道如何运行 haskell 函数,而不必在 ghci 上输入两行,例如,

ghci filename.hs function

这只能通过以下方式完成:

 ghci filename.hs
function

???? 我正在寻找类似 C 中的 main () 的东西,它在编译程序时自动运行 有这样的事吗? 我一直在检查 ghci 上的 -e 选项,但我似乎无法让它工作!

非常感谢!

干杯!

Good morning fellow programmers!

i'm working on a project using haskell, and i've wanted to know how to run a haskell function without having to type two lines on ghci, for example

ghci filename.hs function

This can only be done doing:

 ghci filename.hs
function

????
I'm looking for something like the main () in C,which runs automatically when you compile the program
Is there something like that?
I've been checking the -e option on ghci, but i cant seem to get it to work!

Thank you very much!

Cheers!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

塔塔猫 2024-12-30 02:34:45

您可能正在寻找 ghc -e

> echo 'foo x y z = x+y*z' > foo.hs  % let's make a foo.hs file
> ghc foo.hs -e 'foo 1 2 3'          % call the function in foo.hs
=> 7

另外,请注意,您还可以在 ghci 中使用 :reload 命令。在 ghci 中加载文件,编辑,输入 :reload 并再次测试。另外,如果这看起来太乏味,您还可以定义一个 ghci 宏,它允许您同时重新加载和测试您的函数:

> :def test \x -> return (":reload\n" ++ x)
> :test foo 1 2 3
=> Ok, modules loaded: Foo.
7

如果您想要构建真正的程序而不是快速测试
你的功能,那么你最好阅读其他关于写作的答案
主要功能。

You're probably looking for ghc -e instead:

> echo 'foo x y z = x+y*z' > foo.hs  % let's make a foo.hs file
> ghc foo.hs -e 'foo 1 2 3'          % call the function in foo.hs
=> 7

Also, note that you can also use the :reload command in ghci. Load the file in ghci, edit, type :reload and test again. Also, if this seems too tedious, you can also define a ghci macro which allows you to reload and test your function at the same time:

> :def test \x -> return (":reload\n" ++ x)
> :test foo 1 2 3
=> Ok, modules loaded: Foo.
7

If you're looking to build real programs instead of quickly testing
your functions, then you'd better read the other answers on writing
main functions.

青芜 2024-12-30 02:34:45

我假设 function 的类型为 IO ()。然后你可以让 main = function ,并从命令行使用例如 runhaskell modulename 。与 C 中一样,main 是一个特殊函数。

澄清一下,以防万一:如果您的函数是纯函数,即其类型不涉及IO,则您无法真正“运行它”。我想这样说是一种简化,但本质上 GHCi 所做的是调用打印函数。如果您想模仿这一点,可以使用 main = print function 之类的东西并使用 runhaskell。这假设 function 的类型是 Show 的实例。

I assume function has the type IO (). Then you can just let main = function, and use for example runhaskell modulename from the command line. As in C, main is a special function.

To clarify a bit, just in case: If your function is a pure one, i.e. one whose type does not invovle IO, you can't really "run it". I guess it's a simplification to say this, but essentially what GHCi does is to call print function. If you want to mimic this, you can use something like main = print function and use runhaskell. This assumes function's type is an instance of Show.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文