【问题标题】:How to put function into module?如何将功能放入模块中?
【发布时间】:2011-10-20 22:06:38
【问题描述】:

我有这个功能:

isSortedUp x y z = if x>y && y>z then True else False

我想把它放到模块UP中。

我想把这个函数放到模块下:

isSortedDown x y z = if x<y && y<z then True else False

然后在主程序中调用它们:

import System.Environment
import Up
import Down
main = do
  args<-getArgs
  let a = args !! 0
  let b = args !! 1
  let c = args !! 2
  if (isSortedUp a b c) || (isSortedDown a b c) then return (True) else return(False)

如何放置和调用这个函数?

新代码 Main.hs

import System.Environment
import Up
import Down  
main = do
  args<-getArgs
  let a = args !! 0
  let b = args !! 1
  let c = args !! 2
  if (isSortedUp a b c) || (isSortedDown a b c) then return(True) else return(False)

向上.hs

module Up (isSortedUp) where
isSortedUp x y z = if x>y && y>z then return(True) else return(False)

下来.hs

module Down (isSortedDown) where
isSortedDown x y z = if x<y && y<z then return(True) else return(False)

【问题讨论】:

  • 作为一个小评论:不要写if P then True else False,只写P。同样在 monad 中:if P then return True else return Falsereturn P 一样简单。最后,注意isSortedDown a b c = isSortedUp c b a.

标签: haskell module main


【解决方案1】:

Haskell 中的模块是按文件分解的。因此,要将isSortedDown 放入它自己的模块Down,您需要创建一个新文件Down.hs,并使用module 声明将其内容放入其中:

module Down (isSortedDown) where

isSortedDown x y z = if x<y && y<z then True else False

然后,如果您的 Main 模块可以访问此模块(例如,在同一目录中),它应该可以导入并可以访问。

有关 Haskell 中模块的更多信息,请阅读:

【讨论】:

  • 我有 could not find module 'Down' 但 task1.hs 与 Down.hi 和 Up.hi 位于同一目录中
  • 由于您点击了复选标记,这表明该问题已经得到回答。如果您仍然遇到问题,您可能想在#haskell IRC 频道上提问,或者创建一个新的 SO 问题。
  • @АртёмЦарионов:模块Foo 应该在Foo.hs 中。
  • @АртёмЦарионов: 你用什么命令编译这个?此外(对于这个简单的案例),您需要确保从与 Haskell 源文件相同的目录运行此命令。
  • @АртёмЦарионов:看起来您正在从与源文件不同的目录进行编译。因此,如果您的主模块名为task1.hs,并且您与task.hs 位于同一目录中,那么您应该能够使用ghc --make task1.hs 进行编译。只要 Down.hs 也在同一个目录下,它应该都能正常编译。
【解决方案2】:

注意,你可以简单地写:

isSortedDown x y z = x<y && y<z

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    相关资源
    最近更新 更多