2010-04-16 4 views
2

그래서 바이트 코드로 자바 클래스 파일을 읽을 수있는 프로그램을 작성하려고합니다. 이를 위해 나는 Data.Binary와 Data.ByteStream을 사용하고있다. 내가 가지고있는 문제는 하스켈에 꽤 새롭기 때문에 실제로 이러한 도구를 사용하는 데 문제가 있기 때문입니다.BytesStrings in Haskell

module Main where 
import Data.Binary.Get 
import Data.Word 
import qualified Data.ByteString.Lazy as S 

getBinary :: Get Word8 
getBinary = do 
a <- getWord8 
return (a) 

main :: IO() 
main = do 
contents <- S.getContents 
print (getBinary contents) 

이것은 내가 지금까지 생각 해낸 것입니다. 나는이 질문이 매우 일반적이라는 것을 알고 있지만, 내가 책읽기로 무엇을해야하는지에 대한 도움을 주시면 감사하겠습니다.

+0

당신은 "숙제"... 그이는 무엇으로보고로이를 표시해야합니다 .. : 당신이 Data.Binary를 사용하는 방법을 배울 필요가있는 경우

http://hackage.haskell.org/package/jarfind

, 나는 실제 세계 하스켈 제안 –

+0

내게는 괜찮은 것처럼 보입니다. (하스켈 자신을 배우기 만하면됩니다.) 특별히 잘못된 것이 있습니까? – shosti

+0

들여 쓰기가 잘못되었습니다. –

답변

-7

이것은 실제로 하스켈을 사용하는 최악의 애플리케이션 중 하나입니다. 왜?

I/O가 많다는 것은 모나드를 처리해야한다는 것을 의미합니다. 나는 당신이 언어의 다른 독특한 특징에 익숙해지면 태클을 제안합니다. 수학 분야의 대학원 학위 소지자들도 복잡한 주제입니다. 뿐만 아니라, 대부분 I/O 인 코드를 작성하는 경우, 하스켈에서 많은 알고리즘을 수행 할 수 있고해야한다는 인상을받을 수 있습니다. 그렇지 않다. 아마도 가장 중요한 것은 여러분이이 언어에 매력을 느꼈다는 것입니다. 그 이유는 거의 알려지지 않았기 때문에 짧고 간단한 코드 덩어리이기 때문입니다. 이것은 I/O 및 수동 메모리 관리 (실제로 I/O 임) 외에도 언어의 거의 모든 경우에 해당됩니다.

나는 당신의 프로그램을 C 언어로 작성하는 것이 좋을 것이다.이 프로그램은이 작업에 가장 적합하며, 첫 번째 Haskell 프로그램을 다른 언어에서는 다소 까다로운 것으로 생각해야한다. 저는 기계 학습 알고리즘에 대한 특별한 팬입니다. 그러나 다른 언어로는 찾아보기 힘든 데이터 구조 나 알고리즘이 무엇이든, 하스켈을 위해 재 작업을 시도하십시오.

적은 코드 작성에 익숙해졌습니다. 나의 첫 번째 주요 하스켈 앱은 보강 학습과 유전 알고리즘을 사용하는 멀티 쓰레딩 네트워크 (nueral-network training library)였다. 350 줄의 코드 (많은 양의 주석 달기 포함). 그건 내 생각에 하스켈의 심각한 힘입니다.

+0

저는 그것을하기를 좋아할 것입니다, 불행히도 이것은 하스켈에 있어야하는 클래스에 대한 과제입니다. – Jon

+0

아, 그게 사물을 바꿉니다. 이 경우, 일반 조직은 가능한 한 모나 딕 코드를 거의 갖지 않도록해야합니다. 나는 그것이 "기능 마법의 거대한 맛있는 물방울 주위에 명령 곰팡이의 얇은 껍질"로 설명 들었다고 들었습니다. 다른 말로하면, 가능한 한 명령형 코드를 거의 가지고 가지 말고, 그 코드가 검색된 데이터로 많은 순수한 함수를 호출하도록하십시오. –

+6

Lion : C는 Haskell의 방식대로 바이너리 파일을 구문 분석하기위한 파서 연결자가 없습니다. 이것은 IO 문제, 파싱 문제가 아닙니다. 하스켈의 특별한 장점. –