나는 (그것이 무엇을, 참으로, 또는!) 하스켈 recursion-schemes 패키지에서이 매우 추상적 재귀 함수의 작동 방식을 이해하려고 노력하고 있어요 - this file에서 : 특히 class Functor (Base t) => Corecursive t where
[...]
-- | A generalized postpromor
내 텍스트 편집기 Rasa에서 계속 작업 중입니다. 현재 뷰포트/스플릿 (vim 스플릿과 유사) 추적 시스템을 구축 중입니다. 그것은 나무로이 구조를 표현하기 위해 나에게 자연 듯 : 이것은 위대한 작품을 data Dir = Hor
| Vert
deriving (Show)
data Window a =
Split Dir Sp
숫자의 소수 분해를 찾기 위해 작은 프로그램을 작성했습니다. main 함수를 제외하고 컴파일하는 것 같습니다. Show1 인스턴스를 찾을 수 없다는 불만이 있습니다. {-# LANGUAGE DeriveFunctor #-}
module FactorAnamorphism where
import Data.Functor.Foldable
import Data
다음 코드에서 cataM을 트리 하향식으로 트래버스하는 것이 가능합니다 (현재 상향식이 아닌 상향식이 아닌 방법). 는 내가 다른 foldMap를 구현해야합니다 생각하지만, 아이들이 t의 더 예를하지 않았다있는 방법 branch 이후 어린이 전에 branch 노드 자체를 처리하는 방법을? 당신은 또한 마트 료가 제공하는 기능 topDownCataM을 찾고있
피보나치 번호 목록의 우아한 derinition이 있습니다 : fibs :: [Integer]
fibs = fib 1 1 where
fib a b = a : fib b (a + b)
이 recursion-schemes 라이브러리를 사용하도록 변환 할 수 있습니까? 내가 얻을 수있는 가장 가까운 완전히 다른 접근 방식 사용하는 다음 코드입니다
안녕하세요, 하스켈의 고차 함수에 대한 숙제가 있습니다. 시작하는 데 약간의 문제가 있습니다. 첫 번째 질문에 대한 도움과 설명을 얻을 수 있다면 나머지는 끝낼 수 있다고 확신합니다. 사용 고차 함수 (map, fold, 또는 filter), 필요 람다 식을 경우, f2 같은 f1 =
f2 =
f1 (f2 (*) [1,2,3,4]) 5 ~> [5,10
나는 chronomorphism으로 몇 가지 예를 어떻게 만들 수 있는지 이해할 수 없다. hylomorphism (cata, ana)에 대해서도 알고 있습니다. 또한 histo과 futu에 대해 알고 있습니다. 하지만 나는 연대기 (Tardis 모나드에서와 같은 동작)에 대한 몇 가지 예를 알지 못합니다. 는 또한 링크 https://github.com/
부 프로젝트의 경우 현재 추상적 인 구문 트리를 처리하고 규칙에 따라 변환해야합니다 (세부 사항은 중요하지 않음). AST 자체는 중요하지 않으며 일부 형식으로 만 제한된 하위 표현식이 있음을 의미합니다. . (예를 들어, 운영자 A는 유형 B의 인 인수되지 않은 Expr를 취해야합니다 내 데이터 타입의 대폭 단순화 감소 버전은 다음과 같습니다 data E
I recursion-schemes 라이브러리를 사용하여 다음과 같은 코드가 있습니다 let countBy = reduceBy (\case Nil -> 0 ; Cons a b -> succ b) id in countBy [42,5,5,8,8,8]로 {-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TypeFamilies #-}
i
목록에 비어 있지 않은 구조를 펼쳐 것은 anamorphism를 사용하여 나무 장미,하지만 마지막 요소를 추출하는 것은 불가능 보인다 실제로 불가능은 import Data.Functor.Foldable
data RoseTree a = RoseNode a [RoseTree a]
ana5 :: RoseTree a -> [a]
ana5 = ana coa