Не в области видимости: конструктор данных IsTriangle - PullRequest
1 голос
/ 22 октября 2011

Вот модуль - Number1.hs

module Number1(isTriangle) where

isTriangle x y z = if x*x+y*y >= z*z then True
               else False

Это основная программа Main1.hs

import System.Environment
import Number1

main = do
    args<-getArgs
    let a = args !! 0
    let b = args !! 1
    let c = args !! 2
    if (IsTriangle a b c) then return(True) 
    else return(False)

Эту ошибку я получаю, когда ghc --make Main1.hs

1 Ответ

3 голосов
/ 22 октября 2011

Когда вы вызываете isTriangle в Main1.hs, вы называете его с большой буквы «I».

Убедитесь, что ваша заглавная буква совпадает, поскольку Haskell чувствителен к регистру, и убедитесь, что функции начинаются с символа нижнего регистра, так как это обязательно.

Правка - округление других ошибок

Main1.hs:

import System.Environment
import Number1

main :: IO()
main = do
         args<-getArgs
         {- Ideally you should check that there are at least 3 arguments
         before trying to read them, but that wasn't part of your
         question. -}
         let a = read (args !! 0) -- read converts [Char] to a number
         let b = read (args !! 1)
         let c = read (args !! 2)
         if (isTriangle a b c) then putStrLn "True"
           else putStrLn "False"

Number1.hs:

module Number1(isTriangle) where

{- It's always best to specify the type of a function so that both you and
   the compiler understand what you're trying to achieve.  It'll help you
   no end. -}
isTriangle       :: Int -> Int -> Int -> Bool
isTriangle x y z =  if x*x+y*y >= z*z then True
                      else False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...