티스토리 뷰

Haskell

Programming in Haskell notes

newpolaris 2011. 1. 24. 16:39
대충 기억해 놓을 내용들

함수형 언어의 인자 여러 모양새와 오브젝트 중심 언어의 포괄적 프로그래밍이 다른 점:
함수형 언어에서는 인자 여러 모양새가 기본 초식인 반면 오브젝트 중심 언어에서는 책 마지막에서 다루는 비교적 고급 기술로 여긴다.

타입 클래스(Type Class)란 말 그대로 타입(Type)의 분류(Class)로서 덧셈이나 곱셈과 같이 모든 타입에 다 적용 가능한 여러 모양 함수는 아니지만 공통점이 있는 많은 타입에 적용 가능한 함수의 타입을 딱 떨어지게 정의하기 위해 Haskell 에서 도입한 독특한 기능입니다.

Java : 클래스 정의가 곧 하나의 타입에 대응
Haskell: 클래스는 타입을 모아 놓은 대표 집합, 인터페이스와 유사 (하지만 타입 정의와 인스턴스 선언이 별도)
다른 모듈, 수정 불가능한 라이브러리에 정의된 타입이라도 클래스 인스턴스로 선언하기에 문제가 없다.

// Java 인터페이스 정의
interface Comparable {
  int compareTo(T x);
  // …
}

// 타입을 정의하며 인터페이스 상속
public class MyType implements Comparable {
  public int compareTo(MyType x) {
    // implements method
  }
}
-- 하스켈 타입 클래스 정의
class Ord a where
  compare :: a -> a -> Ordering
  ...
-- 타입 정의
data MyType = ...

-- 별도의 인스턴스 선언
instance Ord MyType where
  compare x y = -- implments method

Ord a => [a] –> [a] 에서의 a는 클래스의 인스턴스
자바 역시 public static <T extends Comparable<T>> .. 형태로 작성 가능

'Haskell' 카테고리의 다른 글

N+K Pattern  (0) 2011.01.29
jolly jumper  (0) 2011.01.18
내가 만든 .hs 파일 사용하기  (0) 2011.01.18
Programming in Haskell (6) ch3. Exercise  (0) 2011.01.17
Programming in Haskell (5) ch2. Exercise  (0) 2011.01.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크