2013年11月18日月曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の11章(ビット演算)、11.8(ビットマップグラフィックス)、11.10(プログラミング実習)、実習11-5をHaskellで解いてみる。

その他参考書籍

実習11-5.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}
import Data.Bits
import Data.Int
import Numeric

main :: IO ()
main = do
    putStrLn "整数を入力(32ビット、符号付き(Int32型)"
    s <- getLine
    if s == "" then
        return ()
    else do
        putStrLn $ "8つの4ビットに分割: " ++ (show $ bits (read s :: Int32))
        main

bits :: Int32 -> [String]
bits n = foldr (\b acc -> showHex ((shiftR n b) .&. 0xf) "":acc) []
               [28, 24 .. 0]

入出力結果(Terminal, runghc)

$ runghc Sample.hs
整数を入力(32ビット、符号付き(Int32型)
0
8つの4ビットに分割: ["0","0","0","0","0","0","0","0"]
整数を入力(32ビット、符号付き(Int32型)
1
8つの4ビットに分割: ["0","0","0","0","0","0","0","1"]
整数を入力(32ビット、符号付き(Int32型)
15
8つの4ビットに分割: ["0","0","0","0","0","0","0","f"]
整数を入力(32ビット、符号付き(Int32型)
16
8つの4ビットに分割: ["0","0","0","0","0","0","1","0"]
整数を入力(32ビット、符号付き(Int32型)
-1
8つの4ビットに分割: ["f","f","f","f","f","f","f","f"]
整数を入力(32ビット、符号付き(Int32型)
-2
8つの4ビットに分割: ["f","f","f","f","f","f","f","e"]
整数を入力(32ビット、符号付き(Int32型)
-16
8つの4ビットに分割: ["f","f","f","f","f","f","f","0"]
整数を入力(32ビット、符号付き(Int32型)
-17
8つの4ビットに分割: ["f","f","f","f","f","f","e","f"]
整数を入力(32ビット、符号付き(Int32型)

$

{-# OPTIONS -Wall -Werror #-}を記述してるから、細かく型を指定(:: Double)しないと警告がいっぱい出た。慣れるまでは{-# OPTIONS -Wall -Werror #-}の記述を消さずに細かく型を指定していくことに。

0 コメント:

コメントを投稿