저는 하스켈의 멍청이이고, 지금은 xmonad를 구성하기 위해서만 사용합니다.Haskell System.Directory getHomeDirectory를 정규 문자열로 변환하는 방법?
git repo에 내 설정을 저장하고 싶습니다. 내 아이콘을 잡기 위해 집 주소를 하드 코드하지 않아도됩니다.
체크 아웃 나는 http://www.haskell.org/haskellwiki/How_to_get_rid_of_IO 체크 아웃하지만 너무 이해가 너무 무지합니다.
hd h = h =<< getHomeDirectory
getIcon::String -> String
getIcon out = ("^i("++hd++".xmonad/dzen2/"++out)
실제로 가능합니까? 그렇다면 어떻게? 나는 그 디렉토리에서 작동하고 싶지 않다. 나는 그저 길을 String으로 만들고 싶어서 죽이려한다.
오류는 다음 IO 모나드가 전혀 제거되지 것처럼
Couldn't match expected type `[Char]' with actual type `(FilePath -> IO b0) -> IO b0' In the first argument of `(++)', namely `hd' In the second argument of `(++)', namely `hd ++ ".xmonad/dzen2/" ++ out' In the expression: ("^i(" ++ hd ++ ".xmonad/dzen2/" ++ out)
나에게 보인다.
업데이트 : 괜찮습니다. IOs 규칙에 적응하는 방법을 배울 것이며 그때까지는 하드 코딩 된 내용을 유지하고 적절한 비트를 대체 할 스크립트로 구성 파일을 복제 할 것입니다.
예, IO 비트를 알고 있습니다. 문제가되는 부분입니다. 리턴 된 IO String이 일반 문자열로 필요합니다. 그 이유는 구성에서 기대하는 것이기 때문입니다. 그래도 코드가 다른 것을 이해하는 데 도움이되었습니다. $ – Erius
@Erius로 반환하고 반환하십시오 'IO String -> String' 유형의 (안전한) 하스켈 함수가 없습니다. 'IO'에서 일어나는 일은 'IO'에 머물러 있습니다. –