혼란 스럽습니다. 나는 print
을 사용하려고 시도하지만 사람들이 putStrLn
을 적용한다는 것을 알고 있습니다. 그들 사이의 진정한 차이점은 무엇입니까?하스켈의 Print와 putStrLn의 차이점
print $ function
putStrLn $ function
혼란 스럽습니다. 나는 print
을 사용하려고 시도하지만 사람들이 putStrLn
을 적용한다는 것을 알고 있습니다. 그들 사이의 진정한 차이점은 무엇입니까?하스켈의 Print와 putStrLn의 차이점
print $ function
putStrLn $ function
함수 putStrLn
개행 문자 뒤에하는 String
를 받아 화면에 표시 (는에게 새로운 L I N E 뒤에 str을 ING 넣어).
String
과 만 작동하므로 공통된 관용구는 어떤 개체를 가져 와서 String
으로 변환 한 다음 putStrLn
을 적용하여 표시하는 것입니다. String
에 객체를 변환하는 일반적인 방법은 show
기능, 그래서 당신이 그것을 그 변환 함수를 정의 할 수있는 매우 큰 스트레치가 아니다 통지되면 코드는
putStrLn (show 1)
putStrLn (show [1, 2, 3])
putStrLn (show (Just 42))
의 많은 끝낼 것 String
에 한 단계 정확히 print
기능이 무엇
print x = putStrLn (show x)
의 문자열을 표시합니다.
'putStrLn'은 "я"와 같은 비 ASCII 문자를 보여줄 수 있지만'print'는 할 수 없습니다. 나는 왜 그런지 정말로 모른다. 'putstrLn "ò"'vs'print "я"'시도해보십시오. – CMCDragonkai
@CMCDragonkai 그 이유는 내가 대답을주고 있기 때문입니다. 'print' 함수는'show'의 출력에'putStrLn'을 호출하고,'show' 함수는 문자열을 표시하기 위해 문자열을 유니 코드 표현으로 변환합니다. 'я'(키릴 문자 "ya")의 유니 코드 포인트는 U + 044F 또는 십진수 1103입니다. 따라서 'show "я"'는 "\"1103 \ ""을 출력합니다. "- 이것은 여러분이 ghci를 입력하여 7 개의 문자'\ 1103 "'(시도해보십시오!)로 구성된 문자열을 가져와야합니다. –
일반적으로 텍스트로 작업 할 때'putStrLn'을 사용하는 것이 더 낫지는 않습니까? – CMCDragonkai
'print = putStrLn. show' – Satvik
ghci에서'print 3','putStrLn 3','print "three,'putStrLn"three "'를 실행 해 보셨습니까? 이것은 정말로 약간의 실험으로 대답 할 수있는 질문입니다. –