하스켈의 지퍼 패턴 (및 다른 기능 언어, 내가 생각하기에)을 트래버스하고 데이터 구조를 수정하는 방법에 대해 조금 읽었습니다. 그리고 이것이 좋은 것이라고 생각했습니다. 클래스는 날아가는 데이터 구조와 관계없이 코드를 작성하기 위해 공통적 인 순회 인터페이스를 제공 할 수 있기 때문에 Haskell에서 타입 클래스를 생성하는 데 필요한 기술을 연마 할 수
간단한 프로젝트에서 clojure (처음으로)를 사용하고 있습니다. csv 파일이 주어진 xml 트리를 업데이트해야합니다. CSV 파일을 한 줄씩 읽고, 값을 추출하고, 주어진 값의 노드를 반복하고 다른 값을 가진 자식 노드를 삽입합니다. 처음 항목을 삽입 할 때 제대로 작동합니다. 두 번째로 NullPointerException을 얻습니다 (추적없이).
내지도에서 지퍼를 만들려고합니다. 지퍼 정의에 따르면, Usage: (zipper branch? children make-node root)
매개 변수 분기는? 아이들은 분명하고 나는 그것을 정의 할 수 있습니다. 그러나 make-node 기능은 혼란 스럽습니다. 내가 사용하고 있다고 생각하지 않는 구현을했다. 는 나는이지도에서 지퍼를 구축 할 {:qu
내 프로그램의 실존 타입에 어려움을 겪고 있습니다. 나는 모나드 data M o = R o | forall o1. B (o1 -> M o) (M o1)
지금 나는 그것을위한 컨텍스트를 만들 모방의 종류, 유사한 데이터 유형을 가지고 내가 그러나 나는 typechecker :( 과거 얻을 수없는 매우 합리적인 뭔가를 할 노력하고있어 생각 그 Haskell
하스켈의 2 차원 격자에 관한 최근의 질문에 영감을 받아리스트 목록에서 위치를 추적하기 위해 2 차원 지퍼를 만들 수 있는지 궁금합니다. 목록에있는 1 차원 지퍼를 사용하면 큰 목록에서 로컬로 효율적으로 이동할 수 있습니다 (일반적인 예는 텍스트 편집기입니다). grid =
[[ 1, 2, 3, 4, 5]
,[ 6, 7, 8, 9,10]
내부에 이동하는 방법, 나는 go_up 방법을 이해할 수 없다 : let go_up (Loc(t,p)) = match p with
Top -> failwith "up of top"
| Node(left,up,right) -> Loc(Section((rev left) @ (t::right)),up);;
다른 유형의 전체 소스는 지퍼를 이해한다면 정의는