하스켈에서 입력 및 출력을 사용하는 방법을 배우고 있습니다. 임의의 숫자를 생성하여 다른 파일로 출력하려고합니다. 문제는 난수가 "IO int"를 반환하는 것 같아서 "show"를 사용하여 String으로 변환 할 수 없다는 것입니다. 누군가 포인터를 여기 줄 수 있니?Haskell에서 IO int를 String으로 변환하는 방법은 무엇입니까?
답변
작성한 코드를 표시하는 것이 도움이됩니다.
어쨌든, 당신은 do
블록에 있으며 이런 식으로 작성 했습니까?
main = do
...
writeFile "some-file.txt" (show generateRandomNumberSomehow)
...
대신 같이해야합니다 :
main = do
...
randomNumber <- generateRandomNumberSomehow
writeFile "some-file.txt" (show randomNumber)
...
<-
연산자는 왼쪽에 Int
-valued 변수에 오른쪽에 IO Int
값의 결과를 결합한다.
이 구문은 do
블록 내부에서만 유효하다 (예,은 등을하는 String
-valued 변수에 IO String
값의 결과를 결합하기 위해 사용 가능). do
블록 자체가 IO 값을 생성한다는 점에 유의해야합니다. IO 성능을 멀리 떨어 뜨릴 수는 없습니다.
도움을 주셔서 대단히 감사합니다 !! 나는 이것을 알아 내려고 하루 종일 소비했다. _ _
dave4420 님의 답변은 여기에서 원하는 내용입니다. IO
이 Monad
이라는 사실을 사용합니다. 그렇기 때문에 do
표기법을 사용할 수 있습니다.
그러나 "실제로는 '열려 있지 않지만 일부 래퍼 내부에있는 값에 함수를 적용하는'개념은 실제로는 IO
보다 일반적이고 모나드보다 일반이라는 개념을 언급 할 필요가 있다고 생각합니다. 그것은 우리가 Functor
클래스를 가지고 있습니다. 당신은 몇 가지 값을 가질 때, (이, 예를 들어, Maybe
또는 []
또는 IO
을 할 수있는) 어떤 펑 f
를 들어
wrapped :: f t
, 당신은 함수 그것에
t -> t'
에게 적용 할 fmap
을 사용할 수 있습니다 (예를 wrapped :: Maybe Int
에 대한) (예 : show :: Int -> String
)
wrappedApplied :: f t'
(예 : wrappedApplied :: Maybe String
)이 표시됩니다. 당신의 예에서
, 그것은
genRandomNumAsString :: IO String
genRandomNumAsString = fmap show genRandomNumPlain
내가 추가하고 싶었던 것, 그렇습니다. +1. 'fmap'은'IO'에서 편리합니다. – AndrewC
- 1. XmlTextWriter를 string으로 변환하는 방법은 무엇입니까?
- 2. int를 float로 변환하는 방법은 무엇입니까?
- 3. objective-c xml을 string으로 변환하는 방법은 무엇입니까?
- 4. CStringW를 std :: string으로 변환하는 클리너 방법은 무엇입니까?
- 5. PostgreSQL : base-10 int를 base-36 string으로 변환하는 함수가 있습니까?
- 6. LINQ 표현식에서 Int를 String으로 변환
- 7. C++에서 int를 enum으로 변환하는 방법은 무엇입니까?
- 8. OCaml - int를 문자열로 변환하는 방법은 무엇입니까?
- 9. Android : website.type_XXX를 String으로 변환하는 방법?
- 10. org.jdom.Document를 String으로 변환하는 방법
- 11. List를 String으로 변환하는 방법
- 12. IntPtr/Int를 Socket으로 변환하는 방법?
- 13. C++에서 int를 string으로 잘못 변환했습니다.
- 14. int를 OData의 string으로 캐스팅하면 오류가 발생합니다
- 15. int를 C# gethashcode()에서 string으로 변환 하시겠습니까?
- 16. int를 통화로 변환하는 방법?
- 17. int를 QString으로 변환하는 방법?
- 18. int를 문자열로 변환하는 방법?
- 19. 유니 코드 QString을 std :: string으로 변환하는 방법은 무엇입니까?
- 20. Objective-C에서 NSString을 HEX String으로 변환하는 방법은 무엇입니까?
- 21. 오디오 .mp3 파일을 String으로 또는 그 반대로 변환하는 방법은 무엇입니까?
- 22. Int32의 바이트를 String으로 변환하는 가장 쉬운 방법은 무엇입니까?
- 23. Groovy가 GString 내에서 char []을 String으로 변환하는 방법은 무엇입니까?
- 24. Address 객체를 String으로 변환하는 가장 좋은 방법은 무엇입니까?
- 25. 소수점이 제거 된 상태에서 numeric을 string으로 변환하는 좋은 방법은 무엇입니까?
- 26. JTextField를 String으로 변환하고 String을 JTextField로 변환하는 방법은 무엇입니까?
- 27. Haskell에서 Ctrl-C 핸들러를 작성하는 방법은 무엇입니까?
- 28. int를 JSP 표현식 언어로 char로 변환하는 방법은 무엇입니까?
- 29. Python 기초 : int를 포함하는 목록을 일반 int로 변환하는 방법은 무엇입니까?
- 30. int를 itoa없이 C에서 이진 형식으로 변환하는 방법은 무엇입니까?
이 도움이되지 않는 것입니까? http://stackoverflow.com/a/2784280/1268844 – Anshu
어떤 코드를 시도 했습니까? – kennytm