[학습 총화 - Haskell - 3] Haskell 상용 데이터 구조

5280 단어
Haskell 상용 데이터 구조
Table of Contents
  • 1 Haskell 기본 지식
  • 2 Haskell 중요 데이터 구조 - list
  • 3 Haskell 상용 데이터 구조
  • 3.1 Tuple 은 무엇 입 니까
  • 3.2 Pair
  • 3.2.1 Pair 는 무엇 입 니까
  • 3.2.2 Pair 와 관련 된 함수
  • 3.3 Tuple 로 프로그램 작성

  • 1 하 스 켈 기본 지식
    2 Haskell 중요 데이터 구조 - list
    3 Haskell 상용 데이터 구조
    3.1 Tuple 이 뭐 예요?
    Tuple 은 이원 그룹, 삼원 그룹 등 입 니 다. 그룹 내 요 소 는 서로 다른 유형 이 될 수 있 고 List 요 소 는 같은 유형 이 어야 합 니 다.
    ghci>(1,2)
    (1,2)
    ghci>('h','i','j')
    ('h','i','j')
    ghci>(1,'a',3.5)
    (1,'a',3.5)
    

    다음 예 는 Tuple 내 요소 의 유형 이 Tuple 의 유형 을 결정 한 다 는 것 을 설명 한다. 즉, (1, 2) 와 (a, b) 는 모두 이원 그룹 이지 만 같은 유형 (1, 2) 과 (1, 2, 3) 은 요소 의 유형 이 같 지만 수량 이 다 르 고 같은 유형 도 아니다.
    ghci>[(1,2),(3,4),(5,6)]
    [(1,2),(3,4),(5,6)]
    ghci>[(1,2),('a','b')]
    error
    ghci>[(1,2),(3,4,5)]
    error
    

    3.2 Pair
    3.2.1 Pair 가 뭐 예요?
    Pair 는 이원 조 입 니 다.
    ghci>(1,2)
    (1,2)
    ghci>(3,4)
    (3,4)
    

    3.2.2 Pair 와 관련 된 함수
  • fst/snd
  • ghci>fst (2,3)
    2
    ghci>snd (2,3)
    3
    
  • zip
  • ghci>zip [1,2,3] ['a','b','c']
    [(1,'a'),(2,'b'),(3,'c')]
    
    ghci>zip [1..] ["Apple","Moto","Nokia"]
    [(1,"Apple"),(2,"Moto"),(3,"Nokia")]
    

    3.3 Tuple 로 프로그램 작성 하기
    예 1 구속 성 프로 그래 밍, 세 변 이 [1, 10] 안에 있 는 모든 직각 삼각형 을 찾 아 라.
    ghci>[(a,b,c) | a <- [1..10], b <- [1..a], c <- [1..b], b^2 + c^2 == a^2]
    [(5,4,3),(10,8,6)]
    

    예 2 Tuple 과 패턴 일치
    first (x,_,_) = x
    second (_,y,_) = y
    third (_,_,z) = z
    
    ghci>first ('a',3,6.7)
    'a'
    ghci>second ('a',3,6.7)
    3
    ghci>third ('a',3,6.7)
    6.7
    

    예 3
    sumPair xs = [x + y| (x,y) <- xs ]
    
    ghci>sumPair [(1,2),(3,4),(5,6)]
    [3,7,11]
    
    sumPair' xs = [z | (x,y) <- xs, let z = x + y]
    

    주의: z = x + y 로 직접 쓸 수 없습니다.
    ghci>sumPair' [(1,2),(3,4),(5,6)]
    [3,7,11]
    

    예 4
    zip' _ [] = []
    zip' [] _ = []
    zip' (x:xs) (y:ys) = (x,y):zip' xs ys
    
    ghci>zip' [1..] ["Apple","***","MI"]
    [(1,"Apple"),(2,"***"),(3,"MI")]
    

    좋은 웹페이지 즐겨찾기