Haskell 언어로 숫자 맞추기 게임을 작성해 보았다.
순수한 함수형 언어로는 반복문을 어떻게 구현하는 가를 보여주는 한 예제로 보면 된다.
대화형 방식으로 사용자의 입력 스트링을 받아서 정수로 변환하여 비교 처리하는 과정도 눈여겨 볼 만한 부분이다. (18째 줄 이하)
소스 파일명: guessNumber01.hs
- {-#
- Filename: guessNumber01.hs
- Purpose: Interactive game guessing a given number.
- if .... else ... then ...
- Execute: runhugs guessNumber01.hs
- Or
- runhaskell guessNumber01.hs
- #-}
- module Main where
- main :: IO ()
- main = doGuessing 123
- doGuessing :: (Ord a, Read a) => a -> IO ()
- doGuessing num = do
- putStrLn "Enter your guess: "
- guess <- getLine
- case compare (read guess) num of
- EQ -> do putStrLn "You win!"
- return()
- LT -> do print "Too low!";
- doGuessing num
- GT -> do print "Too high!";
- doGuessing num
WinHugs의 runhugs.exe를 이용하여 스크립트 소스파일 guessNumber01.hs을 실행해 보았다.
실행> runhugs guessNumber01.hs
Enter your guess:
111
"Too low!"
Enter your guess:
222
"Too high!"
Enter your guess:
123
You win!
GHC의 runhakell을 이용하여 스크립트 소스파일 guessNumber01.hs을 실행해 보았다.
(주석문 {-# .... #-} 이 GHC에서는 인식되지 않음을 알 수 있다.)
실행> runhaskell guessNumber01.hs
guessNumber01.hs:1:0: Unrecognised pragma
guessNumber01.hs:1:0: Unrecognised pragma
Enter your guess:
111
"Too low!"
Enter your guess:
222
"Too high!"
Enter your guess:
123
You win!
WinHugs의 대화형 인터프리터 hugs.exe를 이용하여 스크립트 소스파일 guessNumber01.hs를 실행해 보았다. 마지막에 :quit는 인터프리터를 종료하는 명령이다.
실행> hugs
__ __ __ __ ____ ___ _________________________________________
|| || || || || || ||__ Hugs 98: Based on the Haskell 98 standard
||___|| ||__|| ||__|| __|| Copyright (c) 1994-2005
||---|| ___|| World Wide Web: http://haskell.org/hugs
|| || Bugs: http://hackage.haskell.org/trac/hugs
|| || Version: 20051031 _________________________________________
Haskell 98 mode: Restart with command line option -98 to enable extensions
Type :? for help
Hugs> :load guessNumber01.hs
Main> main
Enter your guess:
111
"Too low!"
Enter your guess:
222
"Too high!"
Enter your guess:
123
You win!
Main> :quit
[Leaving Hugs]
WinHugs의 GUI 대화형 인터프리터 winhugs.exe를 이용하여 스크립트 소스파일 Gugudan.hs을 실행해 보았다. :cd는 change directory 명령이고 :load는 소스파일 탑재(load) 명령이다.
소스파일이 탑재되고 나면 프롬프트가 Main> 으로 바뀐다. 이는 소스파일에 main 함수가 작성되어 있기 때문이다.
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
'프로그래밍 > Haskell' 카테고리의 다른 글
이차방정식 풀이 with Haskell (0) | 2012.05.23 |
---|---|
30000! 빨리 계산하기 with Haskell (0) | 2010.07.20 |
Haskell 언에에서 형(type) 변환하기 (0) | 2009.10.19 |
if...else... 조건문 사용 예제 for Haskell (0) | 2009.10.19 |
명령행 아규먼트 처리 예제 with Haskell (0) | 2009.10.18 |