アフィリエイト広告を利用しています

2023年02月19日

Haskell: 簡単なプログラムを実行してみる

昨日実行環境を整えた Haskell を使ってみる.

教科書は Graham Hutton 著/山本和彦訳『Programming in Haskell 2nd edition』を使う.

本に載っているリストの和を求めるプログラムを sum.hs の名前で保存する.

sum :: Num a => [a] -> a
sum [] = 0
sum (n:ns) = n + sum ns

これを Haskell インタープリターからロードする.

ghci> :load sum

ところが以下のようなエラーが出た.

ghci> :load
sum [1 of 1] Compiling Main ( sum.hs, interpreted )

sum.hs:3:18: error: Ambiguous occurrence ‘sum’ It could refer to
either ‘Prelude.sum’, imported from ‘Prelude’ at sum.hs:1:1
(and originally defined in ‘Data.Foldable’) or ‘Main.sum’,
defined at sum.hs:2:1
||
3 | sum (n:ns) = n + sum ns
| ^^^ |
Failed, no modules loaded.

少し調べたら, sum という関数は Haskell 自身ですでに定義されているので, 同じ名前の関数を定義しようとしたことで名前の衝突が起こったためとわかった.
これを回避するために sum.hs の冒頭に次の一行を追加する.

import Prelude hiding (sum)

sum :: Num a => [a] -> a
sum [] = 0
sum (n:ns) = n + sum ns

これでロードができるようになる.

[1 of 1] Compiling Main ( sum.hs, interpreted )
Ok, one module loaded.

いくつかの計算をしてみる.

ghci> sum [1,3,5,7,9,11]
36
ghci> sum [1..10]
55

この調子で勉強を続けていくつもりである.
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

この記事へのトラックバックURL
https://fanblogs.jp/tb/11880715

この記事へのトラックバック
ファン
検索
<< 2024年09月 >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(43)
コンピューター(211)
(1414)
借金(8)
勉強(12)
(12)
数学(97)
運動(8)
日常生活(1385)
(203)
健康(36)
読書(20)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村