좀더 나은 해답은 여기로 http://functional.or.kr/node/131 연속으로 주어진 숫자들이 n개 있으면 이 숫자들의 간격이 1부터 n-1까지 종류별로 모두 있는 경우를 졸리 점퍼(Jolly jumper)라고 부른다. 예를 들어 1 4 2 3이라는 4개의 숫자가 있을 때 1과 4의 간격은 3, 4와 2의 간격은 2, 2와 3의 간격은 1로 1에서 3까지 모두 있다. 숫자 리스트를 입력 받아 졸리 점퍼인지 판단하는 프로그램을 작성하라. 나는 단순히 앞에서 배운 함수들을 이용하여 해당 함수를 작성하였다. -- "jollyJumper.hs" import List (sort) import Pairs (pairs) jollyJumper :: [Int] -> Bool jollyJumper a = s..
초보자를 위한 글 : http://learnyouahaskell.com/modules#making-our-own-modules 간단하게 "Pairs.hs" 파일 안의 pair 란 이름의 함수를 다른 파일에서도 사용하고 싶다면, ( 함수명과 모듈명은 상관 없다; 여기서는 그냥 Pairs, pairs 인 것 ) module Pairs where pairs :: [a] -> [(a,a)] pairs a = zip a (tail a) 위 같이 작성하여 "Pairs.hs" 파일로 저장하면 된다. 주의 할점은 1. 모듈명은 대문자로 시작해야 한다. ( module 키워드 다음에 오는 단어) 2. 하나의 파일에 오직 하나의 모듈 윈도우 환경에서 GHCi의 경우 소문자인 "pairs.hs"도 동작하긴 하나 가이드에는 ..
Haskell에서의 타입은 서로 관계 있는 값들의 모임으로, v::T 라는 표현은 v라는 값이 T 라는 타입에 속함을 나타낸다. 또한 T -> T 타입은 T 타입의 인자를 받아서 T타입의 결과로 대응시키는 함수를 나타낸다. Haskell에서의 기본타입은 Bool, Char, String, Int, Integer, Float, Double 이 있다. 하나의 수는 여러 타입일 수 있는데 이 경우 위에서의 '::'기호를 이용하여 타입을 명시할 수 있다. 3::Int, 3::Integer, 3::Float Int, Integer 모두 정수를 나타내는데 Int의 경우 고정된 크기의 저장공간을 사용하는 타입니다. 필자의 환경에서의 범위는 -2^31 ~ 2^31-1 이며 시스템에 따라 차이가 있다. 하지만 최소한 -..
1. 다음 산술식을 연산 순서에 따라 괄호로 묶어라. 3. 다음 스크립트에 문법 실수가 3군데 있다. 실수를 바로 잡고 스크립트가 잘 돌아가는지 확인해보라. N = a `div' length xs where a = 10 xs = [1,2,3,4,5] n = a `div` length xs where a = 10 xs = [1,2,3,4,5] Prelude> :load divide5 [1 of 1] Compiling Main ( divide5.hs, interpreted ) Ok, modules loaded: Main. *Main> n 2 *Main> 4. 비어 있지 않은 리스트에서 마지막 원소를 고르는 라이브러리 함수 last를 이 장에서 소개한 다른 라이브러리 함수들로 정의 할 수 있음을 보이라. 또,..
기본 산술 연산자 더하기: '+', 빼기: '-', 거듭제곱: '^', 곱하기: '*', 나누기 '/' 정수 나숫셈: `div` (note: 그냥 따옴표가 아닌 역따옴표다. 역따옴표 '`' 기호는 숫자 1 왼쪽의 물결키 와 함께 있는 고넘이다.) *Main> 5 `div` 0 *** Exception: divide by zero *Main> 5 / 0 Infinity 우선 순위는 다른 프로그래밍 언어와 유사한데 주의 할 점은 Prelude> -3 `div` 2 -1 Prelude> (-3) `div` 2 -2 음수를 나타내는 '-' 연산자의 순서가 `div` 연산자 보다 우선순위가 낮다. 리스트 처리용 기본 제공 함수 몇개 Prelude> -3 `div` 2 -1 Prelude> (-3) `div` 2 ..
vim 의 경우 sytax highlight를 기본적으로 제공하여 필자는 gvim을 이용하여 코드를 작성하였다. 좀더 편한 플러그인 셋은 http://projects.haskell.org/haskellmode-vim/ 에서 자료를 얻을 수 있다. 2. 모든 x에 대해 sum[x] = x임을 보여라. sum[x] = x + sum [] = x + 0 ( 0 은 '+' 의 항등원 = x 3. 수로 이루어진 리스트의 곱을 구하는 함수 product를 정의하고, 정의한 함수를 써서 product [2,3,4] = 24 임을 확인해 보라. myProduct[] = 1 myProduct(x:xs) = x * myProduct xs *Main> myProduct[2,3,4] 24 4. qsort 정의를 수정하여 반대..
note: 실습하면서 글 작성중인 뉴비입니다. 내용상 잘못된 점이 있을 수 있으니 양해 부탁드립니다. 이제 먼가 제대로 되는지 확인해보자 적당한 위치에 폴더를 만들고 메모장 등의 에디터(ex: vim)으로 아래 내용을 작성한 후 "qsort.hs" 파일로 저장하였다. "qsort.hs" qsort[] = [] qsort(x:xs) = qsort smaller ++ [x] ++ qsort larger where smaller = [a|a :load qsort [1 of 1] Compiling Main ( qsort.hs, interpreted ) Ok, modules loaded: Main. ( '\\' 역시 디렉토리 구분하는데 사용할 수 있다 cd c:\\Users\\newpolaris\\Projects..
참고서 : 도서관에 맨 밑에 박혀있던 "하스켈로 배우는 프로그램(Programming in Haskell)" 어느책이든 머리말은 꽤 길다. 그냥 넘기고, 실습은 2장부터니 2장으로 바로 전진. GHC 란걸 설치하라고 되어있다. 뭥..뭥미? 머하여간 GHC도 같이 포함되어있고 좋은 유틸도 있으니 Haskell Platform을 깔라고 하네여 http://hackage.haskell.org/platform/windows.html ..용량은 70mb정도 되는데 다운 로드 속도는 1kb 정도 되므로 torrent로 다운 받습니다. 컥 700MB 부족한 SDD 용량이 또 줄어드는 소리가 들립니더 그러나 8장까지는 Hugs란 것을 사용한다고 되어있는데... 아니 의사양반 GHC는 설치해놓고 9장부터 쓰겠다니. Hu..
Thank you mineralwater http://www.cnlyric.com/html_gc/1830/8719/89434.html http://www.youtube.com/watch?v=Ve9V2_wRpXI http://www.kirin-no-kashi.com 夏川りみ - 時の河 作詞:村野直球 作曲:原田卓也 編曲:京田誠一 闇が着崩れて 月が滲む 夜露 光り浴びて 泣いてるよう 流るる時の河は 祈りをためて何処へと ゆらりゆらゆるり夢枕 逢いたくて、逢いたくて 遥か... 夢見の蛍は 想い灯す 川面に点々と 灯籠流し 流るる星の行方 涙の終わり はじまり 焦るる胸の流れ 願い集めて何処へと 面影 温もり 膝枕 恋しくて、恋しくて Toki no kawa by: Natsukawa Rimi Yami ga kikuzurete tsuki ga..
A Love Tribute (AMV) - Mermaid Melody (italian serie) thank you - OjamajoAiko http://www.youtube.com/watch?v=Wps0_963JAI http://www.surreal.jp/2905/625564.html シマダチ - 夏川りみ 作詞:村上てつや 作曲:村上てつや・宇佐美秀文 朝焼けの海に 船が滑り出す まっすぐな引き波残して いつもの静けさ 聞こえてくるのは 君の凍える息の音 忘れないから 夏休み みんな騒いで 夜を明かした やがて来る季節の 気配を遠ざけた ※次の春には 離れ離れの 僕たちは 何に出会うの 時が過ぎても ひとりじゃないよと 胸に残る君の声 どんな時も※ 初めて昨日が 愛しく思えた いつの日も近くにいたのに 伝えたいけどね 飲み込む言葉は 君へつながる恋の..
- Total
- Today
- Yesterday