내 기능이 무한 목록에서 작동하지 않는 이유는 무엇입니까?

테사 알트만

haskell을 배우고 conseq크기 n의 연속 요소 목록을 반환하는 함수 구현하려고합니다 .

conseq :: Int -> [Int] -> [[Int]]
conseq n x 
      | n == length(x) = [x]
      | n > length(x) = [x]
      | otherwise = [take n x] ++ (conseq n (drop 1 x))

이것은 올바르게 작동합니다.

> take 5 $ conseq 2 [1..10]  
[[1,2],[2,3],[3,4],[4,5],[5,6]]

그러나 [1..]대신 통과 [1..10]하면 프로그램이 무한 루프에 빠집니다.

내가 이해했듯이 haskell은 게으른 평가를 가지고 있으므로 여전히 동일한 결과를 얻을 수 있어야합니까? 그렇 length습니까? 길이가보다 커지면 처음 두 조건이 거짓으로 평가되지 n않습니까?

내가 무엇을 오해 했습니까?

빌렘 반 온셈

사용 length이 좋은 생각이 아닌 주된 이유 중 하나 는 무한 목록에서 평가해야 할 때 무한 루프에 갇히기 때문입니다.

그러나 좋은 소식은 length. 또한 시간 복잡성을 악화시킬 것입니다. 두 개의 열거 자로 작업 할 수 있습니다. 하나는 다른 하나보다 n-1 자리 앞서 있습니다. 이 열거자가 목록의 끝에 도달하면 첫 번째 열거 자에 여전히 n-1 개의 요소 가 있음을 알고 있으므로 값 생성을 중지 할 수 있습니다.

conseq :: Int -> [a] -> [[a]]
conseq n ys = go (drop (n-1) ys) ys
    where go [] _ = []
          go (_:as) ba@(~(_:bs)) = take n ba : go as bs

이것은 우리에게 다음을 제공합니다 :

Prelude> conseq 3 [1 ..]
[[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,7],[6,7,8],[7,8,9],[8,9,10],[9,10,11],[10,11,12],[11,12,13],[12,13,14],[13,14,15],[14,15,16],[15,16,17],[16,17,18],[17,18,19],[18,19,20],[19,20,21],[20,21,22],[21,22,23],[22,23,24],[23,24,25],[24,25,26],[25,26,27],…
Prelude> conseq 3 [1 .. 4]
[[1,2,3],[2,3,4]]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

버튼에 대한 내 addTarget의 기능이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 배열 목록에서 내 if-else-if 문이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 반응 앱에서 handleLogout 기능이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

Beanshell에서 내 기능이 작동하지 않는 이유는 무엇입니까? | JMeter

분류에서Dev

내 드롭 다운 기능이 foreach 루프에서 작동하지 않는 이유는 무엇입니까? PHP

분류에서Dev

내 deleteMessage 기능이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 기능이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 transposeMatrix 기능이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

조건부 innerHTML 후에 내 기능이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

setDuration이 QSequentialAnimationGroup 내에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 SIGNAL이 Django에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

$ '...'내부에서 $ 1이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 onload가 Wordpress에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 customscrollview에서 sliverlist가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 bottomnavigationbar가 flutter에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

onResumeFragments () 내에서 setVisibility ()가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

setMargins가 내 RelativeLayout에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

DataFrame에서 이것이 내가 의도 한대로 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 DHCP 서버가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

탐색 항목에 대한 내 CSS가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 간단한 Google지도 데모가 JSFiddle에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

Oracle에서 고유 한 기능이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 입력이 내 데이터베이스에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 등록 변형이 역할 필드에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

React에서 간단한 이름 변경 기능이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

docker exec에서 "내보내기"가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 ORMLite 사용자 지정 지속 기가 Android에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

이 기능이 내 앱이 아닌 콘솔 구매에서 작동하는 이유는 무엇입니까?

분류에서Dev

내 코드가 동기화에서 올바르게 작동하지 않는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    버튼에 대한 내 addTarget의 기능이 작동하지 않는 이유는 무엇입니까?

  2. 2

    내 배열 목록에서 내 if-else-if 문이 작동하지 않는 이유는 무엇입니까?

  3. 3

    내 반응 앱에서 handleLogout 기능이 작동하지 않는 이유는 무엇입니까?

  4. 4

    Beanshell에서 내 기능이 작동하지 않는 이유는 무엇입니까? | JMeter

  5. 5

    내 드롭 다운 기능이 foreach 루프에서 작동하지 않는 이유는 무엇입니까? PHP

  6. 6

    내 deleteMessage 기능이 작동하지 않는 이유는 무엇입니까?

  7. 7

    내 기능이 작동하지 않는 이유는 무엇입니까?

  8. 8

    내 transposeMatrix 기능이 작동하지 않는 이유는 무엇입니까?

  9. 9

    조건부 innerHTML 후에 내 기능이 작동하지 않는 이유는 무엇입니까?

  10. 10

    setDuration이 QSequentialAnimationGroup 내에서 작동하지 않는 이유는 무엇입니까?

  11. 11

    내 SIGNAL이 Django에서 작동하지 않는 이유는 무엇입니까?

  12. 12

    $ '...'내부에서 $ 1이 작동하지 않는 이유는 무엇입니까?

  13. 13

    내 onload가 Wordpress에서 작동하지 않는 이유는 무엇입니까?

  14. 14

    내 customscrollview에서 sliverlist가 작동하지 않는 이유는 무엇입니까?

  15. 15

    내 bottomnavigationbar가 flutter에서 작동하지 않는 이유는 무엇입니까?

  16. 16

    onResumeFragments () 내에서 setVisibility ()가 작동하지 않는 이유는 무엇입니까?

  17. 17

    setMargins가 내 RelativeLayout에서 작동하지 않는 이유는 무엇입니까?

  18. 18

    DataFrame에서 이것이 내가 의도 한대로 작동하지 않는 이유는 무엇입니까?

  19. 19

    내 DHCP 서버가 작동하지 않는 이유는 무엇입니까?

  20. 20

    탐색 항목에 대한 내 CSS가 작동하지 않는 이유는 무엇입니까?

  21. 21

    내 간단한 Google지도 데모가 JSFiddle에서 작동하지 않는 이유는 무엇입니까?

  22. 22

    Oracle에서 고유 한 기능이 작동하지 않는 이유는 무엇입니까?

  23. 23

    내 입력이 내 데이터베이스에서 작동하지 않는 이유는 무엇입니까?

  24. 24

    내 등록 변형이 역할 필드에서 작동하지 않는 이유는 무엇입니까?

  25. 25

    React에서 간단한 이름 변경 기능이 작동하지 않는 이유는 무엇입니까?

  26. 26

    docker exec에서 "내보내기"가 작동하지 않는 이유는 무엇입니까?

  27. 27

    내 ORMLite 사용자 지정 지속 기가 Android에서 작동하지 않는 이유는 무엇입니까?

  28. 28

    이 기능이 내 앱이 아닌 콘솔 구매에서 작동하는 이유는 무엇입니까?

  29. 29

    내 코드가 동기화에서 올바르게 작동하지 않는 이유는 무엇입니까?

뜨겁다태그

보관