Haskell로 컴파일 할 때 "(파일 이름) : L (현재 행)"포함
결론
한 파일에서 코드의 위치를 문자열로 포함하고 싶다면 이렇게 할 수 있습니다.
{-# LANGUAGE CPP #-}
let here = __FILE__ ++ ":L" ++ show (__LINE__ :: Int)
(컴파일시라고 말했지만, 저것은 거짓말이다. 이것은 아마 프리프로세스시에 해결됩니다)
기
Haskell에서는 함수가 단순히 예외를 낼 가능성이 있는 경우는 Either e
혹은 Maybe
를 사용한다고 생각합니다.
readFooFromSomewhere :: Bar -> Either Text Foo
readFooFromSomewhere bar =
let result = {a result of a some calculation}
case result of
Baz -> Left "残念"
Poi -> Right {some}
이 외에 IO
문맥하에서는 함수 fail
(위험, 다용 엄금. Left e
함수 이외에서의 사용을 추천하지 않습니다.
Nothing
는 주로 비정상계에서 사용된다고 생각합니다.
readFooFromSomewhere :: IO ()
readFooFromSomewhere =
result <- {a result of a some calculation}
case result of
Baz -> fail "残念"
Poi -> return {some}
main
가 사용되는 장소는 대체로 비정상계의 처리라고 생각하기 때문에 통상은 나타나지 않을 것입니다만,
만약 나타나는 경우에 issue로 보고해 주었으면 하는 경우는 이런 느낌으로 생각합니다.
readFooFromSomewhere :: IO ()
readFooFromSomewhere =
result <- {a result of a some calculation}
case result of
-- vvv ここは絶対に通らないよ!もしここを通ったら木の下に埋めてもらっても構わないよ!
Baz -> fail "Main.readFooFromSomewhere: fatal error! sorry, please report an issue if you see this :("
-- ^^^
Poi -> return {some}
수락
그래도 일일이.
그것에 대해 몇 가지 선택 사항이 있습니다.
{-# LANGUAGE CPP #-}
let here = __FILE__ ++ ":L" ++ show (__LINE__ :: Int)
Haskell에서는 함수가 단순히 예외를 낼 가능성이 있는 경우는
Either e
혹은 Maybe
를 사용한다고 생각합니다.readFooFromSomewhere :: Bar -> Either Text Foo
readFooFromSomewhere bar =
let result = {a result of a some calculation}
case result of
Baz -> Left "残念"
Poi -> Right {some}
이 외에
IO
문맥하에서는 함수 fail
(위험, 다용 엄금. Left e
함수 이외에서의 사용을 추천하지 않습니다.Nothing
는 주로 비정상계에서 사용된다고 생각합니다.readFooFromSomewhere :: IO ()
readFooFromSomewhere =
result <- {a result of a some calculation}
case result of
Baz -> fail "残念"
Poi -> return {some}
main
가 사용되는 장소는 대체로 비정상계의 처리라고 생각하기 때문에 통상은 나타나지 않을 것입니다만,만약 나타나는 경우에 issue로 보고해 주었으면 하는 경우는 이런 느낌으로 생각합니다.
readFooFromSomewhere :: IO ()
readFooFromSomewhere =
result <- {a result of a some calculation}
case result of
-- vvv ここは絶対に通らないよ!もしここを通ったら木の下に埋めてもらっても構わないよ!
Baz -> fail "Main.readFooFromSomewhere: fatal error! sorry, please report an issue if you see this :("
-- ^^^
Poi -> return {some}
수락
그래도 일일이.
그것에 대해 몇 가지 선택 사항이 있습니다.
fail
옵션 GHC로 빌드하고 GHC.Stack.HasCallStack 및 fail
사용 이번에는 CPP를 사용해 보겠습니다.
그러나 GCC의
"Main.readFooFromSomewhere"
와 같은 매크로는 없는 것 같기 때문에, 대신에 --profile
와 currentCallStack
로 나타냅니다.{-# LANGUAGE CPP #-}
readFooFromSomewhere :: IO ()
readFooFromSomewhere =
result <- {a result of a some calculation}
let here = __FILE__ ++ ":L" ++ show (__LINE__ :: Int)
case result of
Baz -> fail $ here ++ " : fatal error! sorry, please report an issue if you see this :("
Poi -> return {some}
할 수 있었습니다.
참고
Reference
이 문제에 관하여(Haskell로 컴파일 할 때 "(파일 이름) : L (현재 행)"포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aiya000/items/7efdfd1102ffd5712422텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)