GGG

プログラミング言語やソフトウェア開発について思ったことを書いてます

Haskell 最初のn歩 :演算子を調べる

Haskell始めました。

すぐ忘れちゃって、話にならんので構文メモ。

 GHCi を使ってる。

 

・大文字、小文字を区別する。

 

 計算系の基本演算子。全て関数らしい。

演算子(関数) 備考

加算

+

>1 + 2

3

文字の連結は+ではない。

文字列の場合は

++

減算

-

>1 - 2

-1

 

乗算

*

>1 * 2

2

 

除算

/

>1 / 2

0.5

 

剰余

mod

> mod 100 6
4

 C/C++の%演算子と同じ

←は100 を6で割った余りは?

べき乗(累乗)

^

>10^2
100

 ← 10 の2乗は100

論理値

True

False

 

論理積演算子

&&

>True && False
False
 

論理和演算子

||

>True || False
True
 

論理否定演算子

not

>not False
True
 

等価比較演算子

==

> 1 == 1
True
>"ABC" == "ABC"
True
 

非等価演算子

/=

> True /= False
True

 != ではない。

比較演算子
<
>
<=
>=

 >  1  <  2

True

 

 

 

・書籍に出てくる関数一覧

関数 備考
succ

>succ 10
11

>succ 'a'
'b'

次の(大きい)値を返す
pred

>pred 10
9

>pred 'b'
'a'

ひとつ前(小さい)の値を返す
min >min 10 1
1
 小さい方を返す
max >max 3.4 100
100.0
 大きい方を返す
div div 120 10 整数の除算を行い。商を返す

文法 備考
if , then , else >let abc x = if x > 100 then x * 2 else x / 10
>abc 10
1.0
>abc 100
10.0
 

リスト

[]

[1,2,3,10,11]  

リストの連結

++

>[1,2,3] ++ [ 10,11,12]
[1,2,3,10,11,12]
>"Hello" ++ " " ++ "Haskell!!"
"Hello Haskell!!"
>['H','e'] ++ ['l','l','o']
"Hello"
 
: >'I' : " love you."
"I love you."
>10 : [1,2,3,4]
[10,1,2,3,4]

リストの先頭に追加する
cons演算子というらしい?

数、数のリスト
文字、文字のリスト
を引数にとる

リストの要素にアクセスする

>"Michael Jordan" !! 6
'l'

>[1.2,2.6,100.1,123.9] !! 1
2.6

0から数えて6番目の文字を返す
リストの比較<    
リストの比較>    
リストの比較==    
head    リストの先頭要素を取得する
tail    
last    
init    
length    リストの要素数を調べる
null   リストが空が調べる
reverse   リストを反転する
take    
drop    
maximum    
minimum    
sum    
product    
elem    

 

文法 備考
 .. >[1..5]
[1,2,3,4,5]
>['a'..'d']
['a','b','c','d']
>[2,4..10]
[2,4,6,8,10]
等差数列を作れる。
ただし、公差は初項と第二項の差
cycle    
replicate  Prelude> replicate 3 5
[5,5,5]
Prelude> replicate 4 ["abc"]
[["abc"],["abc"],["abc"],["abc"]]

第1引数:回数

第2引数:繰り返す要素

第1引数の回数分だけ第2引数のデータを繰り返し

リストに格納して

 

文法:リスト内包表記 備考
     
     
     
     

 

文法:タプル 備考