SSブログ

文字列を入力し1文字ずつ見て置換するプログラム [Haskell]

とりあえず入力した文字列のなかで0か1があれば変換して出力するという感じの物ができた

実行結果

Prelude> :l bi.hs
[1 of 1] Compiling Main
Ok, modules loaded: Main.
*Main> fx "012301"
"ab23ab"
*Main>


ソース
word :: String -> String
fx :: String -> String
bi :: Char -> Char
bi c | c=='0' ='a'
| c=='1' ='b'
| otherwise = c

word [] = []
word (c:cs) = bi c : word cs

fx s = unwords $ map word $ words s

otherwise [Haskell]

bi c | c=='0' ='z'
| c=='1' ='y'
| otherwise = c


その他
otherwise

words関数 unwords関数 [Haskell]

テンションあがってきたwww

words関数は空白で区切ってある文字列を分割してくれます
空白に区切らないとそのまま直に入るけど

unwords関数は,
空白は入るけど,文字列を連結してくれます.

すばらしいです

↓適当過ぎる実行例

Prelude> unwords ["s","g","89"]
"s g 89"
Prelude> words "678"
["678"]
Prelude> words "3 x ^ 2 + 5 x ."
["3","x","^","2","+","5","x","."]

String -> Char  [Haskell]

とりあえず 適当に変えたら出来たところまで

===

word :: String -> String
fx :: String -> String
hoge :: Char -> Char

hoge c = c

word [] = []
word (c:cs) = hoge c:cs

fx s = unwords $ map word $ words s

===

hige に入ったcを,数字かどうか見ていく
んで 微分しなきゃならんねぇ・・

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:学校

map とりあえず分からない [Haskell]

リスト内の各々の要素にある関数を適用し,その結果のリストを返す

mapの型は(a -> b) -> [a] -> [b]であり,データ構造内の各要素に関数を適用するための「高階関数(higher-order function)」として定義


だから何なんだw

要するに,StringからCharになるんですか?

今したいのは,Stringを入力して,Charに分割してリストに入れる
んで,出力なんです
(↑ 超初歩段階w

だめだわー

うつしたけどよくわからないHaskellさん [Haskell]

wordsCount :: String -> Int
wordsCount str = outWords str
where wordScan f [] = 0

wordScan f (c:cs) | isAlphaNum c = f (inWords cs)
| otherwise = outWords cs

outWords :: String -> Int
outWords str = wordScan(\n -> 1 + n) str

inWords :: String -> Int
inWords str = wordScan id str

その2


 [Haskell]

char 型
'a' '!' シングルクォートで囲まれたものは文字

Bool型
ifで真理値を表す場合にTrue かFalseを返す その時の型



数値

31ビット -> Int
任意長精度整数 ー> Interger
有理数 ー> Rational
浮動小数点少数 ー> Float
倍精度浮動小数点少数 ー> Double


|の書き方に注意が必要 [Haskell]

インデントに注意が必要です

式 | 条件式
  | 条件式

これより前にあるとダメです

エラーで2時間もロスしますw 

rem == % [Haskell]

rem

実際には'rem'は%と同様の意味(だろう

f :: integer -> [interger]
fは,intergerで入力してintergerで返す
という意味

main がないものをロードして出力 [Haskell]

test.hsを作成
中身は以下
===
add :: Integer -> Integer -> Integer
add x y = x + y

===

んで
>ghci
>:l test.hs
(↑ :lがロードという意味,test.hsをロードせよという感じ)

んで,このプログラムの場合は,
>add 1 3
4


と返ってきた!!

※ まぁ そこら辺に落ちてたファイルをコピーしてコンパイル下だけだから出来てあたりまえww

戻るときは:l と入力すると戻れた!!
by Tweet Button

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。