프로그래밍/Haskell 13

이진 파일을 읽어서 16진수로 보여주는 HexView 소스 with Haskell

Haskell 언어 소스: {- Filename: testHexView_02.hs Purpose: Show hexadecimal values of the given file. Compile: ghc testHexView_02.hs Execute: testHexView_02 [filename] Date: 2013. 8. 20. -} module Main where import System.Directory import System.Exit import System.IO import System.Environment import Text.Printf import Data.Bits import Data.Char (ord) import Data.Char (chr) import Data.Array import D..

Haskell 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제

역삼각함수란 삼각함수의 역함수를 의미하고, 역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다. 수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, Haskell 언어에서는 asin 함수로 구현되어 있다. 또한 Haskell 언어에서는 쌍곡선함수 sinh, cosh 의 역함수들이 각각 asinh, acosh 라는 이름으로 이미 구현되어 있다. 그래서 비교를 위해 아래의 소스에 arcsinh, arccosh 라는 이름의 함수로 구현해 보았다. 영문 위키피디아의 GHC 설명: http://en.wikipedia.org/wiki/Glasgow_Haskell_Compiler (참고. Haskell 언어는 대소 문자를 구분하며 타입에 엄격한 언어이다. ) 아래의 소스는 Glasgow Haskell Compil..

Haskell 언어로 행렬 곱셈하는 예제

Haskell 언어로 행렬 곱셈하는 간단한 소스 (정수로 이루어진 행렬, 분수로 이루어진 행렬, 부동소수점수로 이루어진 행렬, 복소수로 이루어진 행렬 들릐 곱셈을 처리합니다.) -- Filename: testMatrixMultiplication.hs -- -- 참조: http://rosettacode.org/wiki/Matrix_multiplication#Haskell module Main where import Data.Complex import Data.Ratio import Text.Printf import Data.List -- 행렬 곱셉 함수 mmult :: Num a => [[a]] -> [[a]] -> [[a]] mmult a b = [ [ sum $ zipWith (*) ar bc | bc

Haskell 언어로 복소수 계산과 분수 계산 쉽게 하기

Haskell 언어로도 (Python 언어 처럼) 복소수 게산과 분수 게산을 쉽게 할 수 있습니다,. (1) Haskell 언어에서 복소수를 사용하려면 import Data.Complex 구문이 있어야 합니다. 복소수의 표현은 실수부 :+ 허수부 입니다. (2) Haskell 언어에서 분수를 사용하려면 import Data.Ratio 구문이 있어야 합니다. 분수의 표현은 분자 % 분모 입니다. (3) C 언어의 printf 나 Python 언어의 print 처럼 포맷 출력을 하려면 import Text.Printf 구문이 있어야 합니다. 아래에서 진한 글자체로 된 부분만 입력하고 엔터키를 누르면 됩니다. (ghci 는 Glasgow Haskell 의 인터프리터이고,. ghc는 Glasgow Haskell..

이차방정식 풀이 with Haskell

GHC 의 runhaskell 명령으로 소스 파일을 직접 실행해도 되고, ghc 명령으로 컴파일하여 생성된 실행파일을 실행해도 된다. -- Filename: solveQuadratic.hs -- Solve a quadratic equation. -- -- Compile: ghc solveQuadratic.hs -- Execute: solveQuadratic 1 3 2 -- -- Or -- -- Execute: runhaskell solveQuadratic.hs 1 3 2 {- Compile: ghc solveQuadratic.hs Execute & Result: solveQuadratic 1 0 4 Quadratic Equation: 1.0x^2 + 0.0x + 4.0 = 0 Discriminant D ..

30000! 빨리 계산하기 with Haskell

* 꼬리 재귀호출과 패턴 매칭을 이용하여 구현한 팩토리얼과 피보나치 수열 계산 {- Filename: fact.hs Rapid factorial and fibonacci seq implementations by pattern matching and tail recursive call Compile: ghc fact.hs Execute: main Date: 2010/07/20 Author: phkim pkim (AT) scripts.pe.kr -} module Main where factorial :: Integer -> Integer factorial n = recfact 1 n recfact :: Integer -> Integer -> Integer recfact acc k = case k of 0 -..

숫자 맞추기 게임 with Haskell

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 #-..

if...else... 조건문 사용 예제 for Haskell

소스 파일명: testIf.py {-# Filename: testIf.hs Purpose: Example using the conditional control structure syntax if .... else ... then ... Execute: runhugs testIf.hs [number] Or runhaskell testIf.hs [number] #-} module Main where import System.Environment -- 사용법을 보여주는 함수 printUsing :: IO () printUsing = do putStrLn "Using: runhugs testIf.hs [number]" putStrLn "This determines whether the number is posi..