2017-11-04 6 views
1

그래서 문제가되지 않지만 더 나은 방법이 무엇인지 의견을 말하고 싶습니다.사용자 지정 읽기 방법 또는 사용자 지정 읽기 인스턴스가있는 엄격한지도

key: value 
okey: enum 
stuff: 0.12240 
amazin: 1020 

그리고 나는 하스켈 접근 가능한 형식으로 구문 분석 할 필요가, 내가 생각 두 솔루션은 하나 있었다 : 그래서는 외부 소스 (TCP)에서 데이터를 읽을 필요, 그 형식에 기본적으로 제공 to, String to String 맵으로 구문 분석하거나 구문 유형 선언을 기록하십시오.

처음에 내가 필요한 치료 및 방법 내에서 구문 분석을 내 문자열 => 문자열 맵 타입 동의어를 확인하고 amazin :: NiceSynonym -> Int 같은 추출 기능을하고, 어떻게 생각했지만, 그 당시 스케치, 같은 느낌? 그런 다음 사용자 정의 읽기 인스턴스로 레코드 구문을 사용하여 실제 유형 선언을 생각했습니다. 그건 다른 종류의 enum과 키가 많기 때문에 악몽이었습니다. 그리고 그것은 실망 스럽습니다. 단순히 인수를 감싸고 독자 기능을 만듭니다. 원본과 크게 다르지 않습니다 : amazin :: TypeDeclaration -> Int.

이제 저는 처음에 생각한대로 독자 기능을 사용하지 않는 것에 대해 후회합니다. 그래서, 내가 생각하기를 잊어 버리고있는 다른 무엇? 양측 모두 장단점이 있습니까? 그 중 하나가 객관적으로 더 나은가요?

PS : 어떤 일을 할 수 고려 사항 또는 다른 더 나은 :

  • 일단 내가 전혀 전혀 변경하지 않아도됩니다 읽고, 그것은 기본적으로 상태 보고서
  • 비교할 필요가 없습니다이다 정말 그냥 다시 상태보고 어떤 점
  • , 등, 성능에 대한 필요를 추가, 나는 수백을 두 번째 또는 아무것도

TL을 읽는 습관, DR을 : 입력 예, w 최고의 무엇을 감안할 때 하스켈에서 읽을 수있는 형식으로 만들 수 있습니까? 지도, 데이터 생성자, 의존적 인지도 ...

+0

이 질문은 다소 모호합니다 (그러한지도에 어떤 종류의 기능 (및 해당 유형)을 갖고 싶은지). 키의 값 유형이 키에 의존 할 수있는 값 (예 : [종속 맵] (https://hackage.haskell.org/package/dependent-map-0.2.4.0/docs))에 이르기까지 키의 맵을 원한다고 생각합니다. /Data-Dependent-Map.html)); 하지만 런타임에 오류가 발생하지 않도록 프로그램을 보장해야하는 경우가 아니라면 (어쨌든 인터넷을 통해 데이터를 읽는다면 다소 쓸모가 없습니다.) 이것은 아마도 과잉입니다. 'Map String Value'는'data Value = ValA A | ValB B | ValC C | .. '? – user2407038

답변

0

두 가지 방법 모두 자체적 인면에서 매우 유용하지만 이러한 프로토콜과도 상호 작용하는 API를 만들었으므로 필자는 레코드 구문을 선호하므로 모든 속성 더 쉽게. 또한 실제로 getter 함수에서 검사 나 처리를 수행하지는 않을 것이고 내 유형에 대한 판독기 인스턴스를 만드는 것이 지루할지라도 수동으로 모든 get 함수를 수동으로 수행하는 것이 더 나쁠 것입니다. 수동으로 물건을 파싱하는 것은 본질적으로 지루한 일입니다. 나는 나를 위해 모든 일을 할 수있는 환상적인 하나의 라이너를 찾고있었습니다.