Successfully reported this slideshow.
Your SlideShare is downloading. ×

Haskell study 1

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Haskell study 3
Haskell study 3
Loading in …3
×

Check these out next

1 of 11 Ad

More Related Content

Slideshows for you (20)

Advertisement

Recently uploaded (20)

Haskell study 1

  1. 1. Haskell Study 1. 기본 개념들
  2. 2. 표현식 - 수식 ghci를 켜서(cmd창 or 터미널에서 ghci라고 타이핑) 아래 코드들을 치고 결과를 확인해봅시다. Prelude> 2 + 15 17 Prelude> 49 * 100 4900 Prelude> 1892 - 1472 420 Prelude> 5 / 2 2.5 일반적인 연산들은 우리가 생각하는 그대로 동작합니다.
  3. 3. 표현식 - 수식 다른 언어들과 마찬가지로 괄호로 연산의 우선 순위를 정할 수 있습니다. Prelude> (50 * 100) - 4999 1 Prelude> 50 * 100 - 4999 1 Prelude> 50 * (100 - 4999) -244950 Prelude> 5 * (-3) -15 주의 : Haskell에서 음수를 다룰 때는 반드시 괄호로 감싸는 것이 좋습니다. 컴파일러가 뺄셈 연산과 부호 연산을 헷갈려합니다.
  4. 4. 표현식 - 비교 비교 구문도 타 언어와 거의 같습니다. 단, 서로 다름을 나타내는 연산자는 /= 입니다. Prelude> True && False False Prelude> 3 /= 2 True Prelude> not False True Prelude> 1 == 2 || 3 == 3 True
  5. 5. 표현식 - 함수 지금까지 다룬 연산들 ( +,-,*,/, == 등등) 역시 함수입니다. 이 함수들은 중위 함수기 때문에 인자들 중간에 함수를 넣었지만 대부분의 함수들은 전위 함수죠. 일반적인 함수들에 대해 알아봅시다. Haskell에서 함수 호출은 타 언어와 조금 다릅니다. Haskell에서 함수 호출은 단순히 함수의 이름과 인자 사이에 공백을 넣는 것을 통해 이루어집니다. C++ : f(2,3,4) Haskell : f 2 3 4 C++ : someFunc(a,b,3,f(2,3)) Haskell: someFunc a b 3 (f 2 3)
  6. 6. 표현식 - 함수 함수 호출도 GHCi를 통해 테스트해 봅시다. Prelude> (+) 3 5 8 Prelude> succ 8 9 Prelude> min 10.1 9.5 9.5 Prelude> succ 9 + max 5 4 + 1 16 Haskell에서 함수 어플리케이션(함수 이름과 인자를 통해 함수를 호출한 것)은 가장 높은 우선순위를 갖습니다. succ 9 + max 5 4 + 1은 (succ 9) + (max 5 4) + 1과 동일합니다.
  7. 7. 표현식 - 함수 Haskell에서 인자를 2개 받는 함수의 경우 backtick(`)을 이용하여 중위 함수로 표현할 수 있습니다. Prelude> 5 `div` 3 1 Prelude> 5 `mod` 3 2 Prelude> 5 `max` 4 5 Prelude> 5 `min` 4 4 div나 mod같은 함수는 중위 함수로 썼을 때 가독성이 좋습니다. max나 min같은 경우는 좀 애매하네요.
  8. 8. 함수 만들기 이제 간단한 함수를 한 번 만들어봅시다. 아무 텍스트 에디터에서나 아래 코드를 작성한 후 first.hs( 혹은 원하는 이름)로 저장하고 GHCi에서 실행시켜봅시다. first.hs double x = x + x 파일을 저장한 후 저장한 폴더에서 GHCi를 실행하고 :l (fileName)구문을 통해 작성한 코드를 불러오면 됩니다. Prelude> :l first.hs [1 of 1] Compiling Main Ok, modules loaded : Main Prelude> double 3 6
  9. 9. 함수 만들기 Haskell에서 함수의 선언 순서는 상관이 없습니다. first.hs double2 x y = double x + double y double x = x + x ghci에서 다시 실행해 봅시다. Prelude> :l first.hs [1 of 1] Compiling Main Ok, modules loaded : Main Prelude> double2 3 5 34
  10. 10. if - then - else 타 명령형 언어에서 조건문으로 쓰이는 if 구문이 Haskell에서는 표현식입니다. C++의 삼항 조건 연산자와 유사하다고 생각하시면 됩니다. 표현식이기 때문에 else 부분이 빠질 수 없으며 식 자체로 하나의 결과 값이 됩니다. Haskell : if (조건) then (조건이 참일 때 값) else (조건이 거짓일 때 값) C++ : (조건) ? (조건이 참일 때 값) : (조건이 거짓일 때 값) 이 걸 이용해서 함수를 만들어 봅시다. first.hs -- 100보다 작으면 2배, 아니면 원래 수를 그대로 돌려주는 함수 doubleIf x = if x < 100 then x * 2 else x
  11. 11. 연습 문제 • even 숫자 하나를 받아서 그 숫자가 짝수면 True, 홀수면 False를 돌려주는 함수를 만들어 봅시다. (* haskell에 이미 even이라는 이름의 같은 함수가 존재합니다. 함수의 이름은 even 말고 다른 걸로 쓰셔야 합니다. ) • factorial 숫자 n을 받아서 n!(1*2*...*n)을 계산하는 함수를 만들어 봅시다.

×