복붙노트

[SCALA] DList은 무엇인가?

SCALA

DList은 무엇인가?

나는 이것에 대한 인터넷 검색을 시도하지만, 모든 I의 GOT 사소한 유명 인사에 대해 이야기했다. 문서의 부족을 감안할하는 DList은 무엇인가?

해결법

  1. ==============================

    1.그것은 "기능과 같은 차이 목록"의 라인을 따라, 차이 목록입니다

    그것은 "기능과 같은 차이 목록"의 라인을 따라, 차이 목록입니다

    scala> val (l1, l2, l3) = (List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))
    l1: List[Int] = List(1, 2, 3)
    l2: List[Int] = List(4, 5, 6)
    l3: List[Int] = List(7, 8, 9)
    

    효율적인 prepending이 :

    scala> l1 ::: l2 ::: l3
    res8: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    

    비효율적 추기. 이것은 중간리스트를 생성 (L1 + L2), 다음 ((L1 + L2) (L3) ++)

    scala> l1 ++ l2 ++ l3  // inefficient
    res9: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    

    추가 최대 DList 매장, 오직 호출 효과적으로 하나 개의 완전한 목록을 만들 필요가있다 :

    scala> List(l1, l2, l3) reduceRight ( _ ::: _) 
    res10: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    
  2. ==============================

    2.차이점 목록리스트 형 데이터 구조를 지원하는 O (1) APPEND 동작이다.

    차이점 목록리스트 형 데이터 구조를 지원하는 O (1) APPEND 동작이다.

    목록 수정 APPEND, 및 기타 작업을 직접리스트를 복사하는 것보다 오히려, 변형 기능의 기능 구성을 통해 표현된다.

    하스켈의 dlist 라이브러리의 예 :

    -- Lists as functions
    newtype DList a = DL { unDL :: [a] -> [a] }
    
    -- The empty list
    empty       = DL id
    
    -- The append case: composition, a la Hughes
    append xs ys = DL (unDL xs . unDL ys)
    
    -- Converting to a regular list, linear time.
    toList      = ($[]) . unDL
    

    이 기술은, 그 예 있도록 함수의 합성으로 나타내는 함수로 나열하고 APPEND 제안 휴즈 (84), 새로운리스트의 표현과 기능 "역방향"에의 응용, R. 존 휴즈, 1984, 다시 적어도 간다 선형 시간에 실행되도록 역. 종이에서 :

  3. ==============================

    3.그것은 양쪽 끝에서 일정 시간의 액세스를 입력 목록에 유용 비정규 scalaz 패키지의 데이터 유형입니다. (트릭은 "스칼라"AND "dlist"에 대한 구글하는 것입니다.)

    그것은 양쪽 끝에서 일정 시간의 액세스를 입력 목록에 유용 비정규 scalaz 패키지의 데이터 유형입니다. (트릭은 "스칼라"AND "dlist"에 대한 구글하는 것입니다.)

  4. ==============================

    4.scalaz의 프로젝트 페이지에서 :

    scalaz의 프로젝트 페이지에서 :

  5. from https://stackoverflow.com/questions/3352418/what-is-a-dlist by cc-by-sa and MIT license