第1週目の授業、とりあえず絵を出そう


2012年 12月 27日

第1回目の授業の記録を追ってみよう。

Haskellの先生が、Chris Smithさん。

そして、Sue Spenglerさんがこの学校の創立者、校長、秘書その他何でも屋さんのようである。
何か、ちょっと変わった学校のような気がする。
まあ、Haskellを子供に教えようという学校だから、そういうことくらい当然あるだろう。

とりあえず、どうやったらHaskell遊びができるのか、斜め読みをしてみた。

子供が(大人も)簡単にお絵描きをHaskell+Glossで試せるページが公開されている。

http://dac4.designacourse.com:8000/sim

ここでは、いくつかの選択があるのだが、Pictureを選んで、ちょっと実験したいことを書き込んで、Runボタンを押すと、右側半分がグラフィック画面になって、そこに指示した絵が出てくるようになっている。これを使えば、面倒なインストールの作業もいらない。

最初に説明されるのが、以下の2行だ。

import Graphics.Gloss
picture = circle 80

ということで、理解しなくてよいから、とにかくこれを入れて、Runボタンを押してみると円が表示された。

week1-1.png
ちゃんと円が出たようなので、OKのはずだ。
後は、ここにいろいろなことを書けば、複雑な絵だって、大丈夫なのではないだろうか。

で、次にやることは当然、このWebページを使わず、ghciから直接動かすことだ。
ということで、上の2行を入れてみた。

Prelude> import Graphics.Gloss
Prelude Graphics.Gloss> picture = circle 80

<interactive>:3:9: parse error on input `='

これはダメなんだ。
やりたいことは円を描くだけだから、circle 80 だけ入れてみよう。

Prelude Graphics.Gloss> circle 80
Loading package array-0.4.0.0 ... linking ... done.
Loading package deepseq-1.3.0.0 ... linking ... done.
Loading package OpenGLRaw-1.3.0.0 ... linking ... done.
Loading package GLURaw-1.3.0.0 ... linking ... done.
Loading package ObjectName-1.0.0.0 ... linking ... done.
Loading package StateVar-1.0.0.0 ... linking ... done.
Loading package Tensor-1.0.0.1 ... linking ... done.
Loading package OpenGL-2.6.0.1 ... linking ... done.
Loading package containers-0.5.1.0 ... linking ... done.
Loading package GLUT-2.3.1.0 ... linking ... done.
Loading package bytestring-0.10.0.1 ... linking ... done.
Loading package binary-0.5.1.1 ... linking ... done.
Loading package bmp-1.2.3.2 ... linking ... done.
Loading package gloss-1.7.7.1 ... linking ... done.
Circle 80.0
Prelude Graphics.Gloss> 

いっぱいロードしてくれたけれど、Circle 80.0 と表示されただけで、グラフィックスウィンドウが出て、そこに円が出るなんてことは起きなかった。

子供向けの授業では、ghcから直接glossを使う方法が書かれていないようなのだ。

次回までに、ghc/ghci から直接glossを楽しむ方法を調べておこう。