하스켈에서 라이브러리 모듈을 확장 할 수있는 방법이 있습니까?하스켈 모듈 확장
예를 들어, firstToLower
기능을 Data.String
에 추가하고 싶습니다. 나는 하나의 라이브러리 내 자신의 Data.String
이 마스크를 만들 때 :
Module `Data.String' does not export `lines'
이 같은 일이 가능하다면 정말 좋은 것 :
module Data.String where
import Prelude
import Data.Char (toLower)
firstToLower :: String -> String
firstToLower (c:cs) = toLower c : cs
firstToLower "" = ""
은 그 때 나는 오류가
import Data.String (lines)
하려고 얻을. 그렇지 않은 경우 그러한 상황에 대한 모범 사례는 무엇입니까? 그러한 확장을 어디에 배치해야합니까?
감사합니다.
업데이트 내가 라이브러리로 내 확장을 출시 할 계획이없는
, 그냥 의미있는 방식으로 내 프로젝트의 내부를 구성하고 싶습니다.
요약하면, 당신은 haskell 모듈을 확장 할 수 없습니다. 이것에 대한 귀하의 유스 케이스는 무엇입니까? – Satvik
제 질문에 유스 케이스를 설명했습니다. 도서관에서 놓친 기능을 다루는 방법을 묻고 있습니다. 자연스럽게 라이브러리에 속하기 때문에 공통 코드와 혼합하고 싶지 않습니다. – lambdas
또한 예제 함수는 특정 라이브러리 모듈에 대해 특별하고 사소한 것으로 간주되는 IMO입니다. 구현이 그리 관용적이지는 않다는 점에 유의하십시오. firstToLower (c : cs) = toLower c : cs; firstToLower ""= ""'. – leftaroundabout