2013-01-15 1 views
7

우수한 24 일간의 hackage를 읽었습니다. 당신이라는 구성 파일에 라인구성 자 사용 방법

herlist = [1, "foo", true] 

이있는 경우 그리고 난 "configurator

가 어떻게

herlist = [1, "foo", true] ? 
+0

'[1, "foo", true]'는 단순한 유형이 없으므로 유효한 하스켈 문자열이 아닙니다. –

+0

@DonStewart이 예제는 하스켈 코드가 아니며 구성자 라이브러리를 사용하여 읽을 텍스트 파일의 행입니다. 구성 관리자 설명서에서 가져 왔습니다. – Heatsink

+4

이 질문이 닫힌 이유를 모르겠습니다. 이는 문서에서 다루지 않기 때문에 훌륭한 질문입니다. 유용한 답변은 – user239558

답변

10

등의 데이터의 목록을 검색 할 수있는 패키지에 시도를주고 싶습니다 example.cfg "이면 해당 값을로드하여 표시하는 가장 간단한 프로그램은

{-# LANGUAGE OverloadedStrings #-} 

import Data.Configurator 
import Data.Configurator.Types (Value) 

main = do 
    cfg <- load [Required "example.cfg"] 

    lst <- require cfg "herlist" :: IO Value 

    print lst 

Text으로 명시 적으로 변환 할 필요없이 일반 문자열 리터럴을 구성 키로 사용할 수 있도록 OverloadedStrings 확장이 사용됩니다.

"herlist" 키를 검색 할 때 컴파일러에게 예상되는 유형을 명시해야합니다. 이렇게 간단한 프로그램에서 값을 인쇄하지만 컴파일러는 컨텍스트에서이를 추론 할 수 없기 때문입니다.

유형 Value은 구성 값의 원시 유형입니다. 실제 프로그램에서는 보통 ValueConfigured 유형 클래스의 인스턴스를 정의하여 Google 프로그램에서 사용하는 사용자 정의 유형으로 변환합니다.

+0

Thx입니다. 하지만 내 구성에 대한 액세스 권한이 필요한 모든 함수에 매개 변수로 "cfg"를 전달해야합니까? 또는 main에서 초기화되고 다음과 같이 상수처럼 액세스 할 수있는 것과 같이 전역 적으로 액세스 할 수있는 데이터 구조가 될 수있는 방법이 있습니까? 아직도 아주 새로운 haskell. – kuttifunk

+0

주위를 통과해야합니다. – Obscaenvs