초속으로 복사하려는 Haskell 디버깅 함수
언제나 초속으로 만드는 사람도있는 것 같습니다. 하지만, 역시 체일 쓰는 시간이 아무것도 없다고 생각하기 때문에 여기에 메모합니다 1
요구하고 있던 것은 TraceUtils 에 있었습니다.
기분이 좋으면 cabal 파일에 쓰면 좋을 것입니다.
다만, 아무래도 stackage에는 등록되어 있지 않고, LTS 7.16 의 시점에서 존재하지 않습니다.
문서에도 "Feel free to copy&paste these functions into modules that need them, that may be easier to remove/clean up than adding a cabal dependency." 라고 쓰여 있으므로 아마 copipe 하는 것이 빠르겠지요.
라고 하는 이유로 특히 편리한
traceId
와 traceIdVia
를 실어 버립니다. 코피페 때 방해가 될 것 같아서 코멘트는 삭제했습니다.좋아하게 복사하면 좋지 않을까.
import Debug.Trace hiding (traceId)
traceIdVia :: Show b => (a -> b) -> String -> a -> a
traceIdVia via prefix x = trace (prefix ++ ": " ++ show (via x)) x
traceId :: Show a => String -> a -> a
traceId = traceIdVia id
-- おまけ: show ではコードポイントに変えられてしまう日本語を扱う我々にはきっとこちらの方が便利
traceStringVia :: (a -> String) -> String -> a -> a
traceStringVia via prefix x = trace (prefix ++ ": " ++ via x) x
traceString :: String -> String -> String
traceString = traceStringVia id
덧붙여서
traceId
에 대해서는 표준의 Debug.Trace
모듈에 같은 이름의 함수가 있으므로 주의합시다. 그래서 
Elm과 같이
log
정도 짧은 이름으로 좋을지도.이 기사의 끝에서도 언급하지만, 처음의 tweet의 "Elm의 Debug.trace 같은 거동의 프린터"부분은 바르게는 "Elm의 Debug.log 같은 거동의 프린터"입니다. ↩
Reference
이 문제에 관하여(초속으로 복사하려는 Haskell 디버깅 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/igrep/items/8b62b856ff42d1f51619텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)