나는 GHC로 컴파일 한 후에 실행될 때 일관되게 멈추는 것처럼 보이는 다음 코드를 가지고있다. (빌드 실패는 -Werror
이 아니다.).하스켈이 전화 번호 변환에 걸려있다.
import Data.Aeson
import Data.Scientific
import qualified Data.HashMap.Strict as S
myObj = Object $
S.fromList [("bla", Number $ pc * 100.0)]
where pc = 10/9
myObj
에 액세스하려고하면 프로그램이 중단됩니다. 어떤 파기 후에는 haskell이 숫자 변환 (비록 위의 스 니펫과 함께 경고 또는 오류는 없음)으로 힘든 시간을 보내는 것처럼 보입니다. 위의 9
을 10
으로 변경하면 중단되지 않습니다. 그러나 나는 이상하게 여기는 이유가 궁금합니다.
솔직히 말해서 매우 중요합니다. 분자 및 분모가 사용자 입력에서 오는 실제 응용 프로그램에서이 경우는 요청의 일부에만 표시되어 디버그하기가 매우 어렵습니다. 일반적인 조언은 Data.Scientific을 전혀 피해야하며 숫자를 JSON으로 변환 할 때만 사용하는 것이 좋습니다. – pretobomba