Antoine.st About Smalltalk

#Smalltalk

sml で出ていた話題 ([SML 6219] SharpSmalltalk) によりますと、.NET 版の Smalltalk が完成したそうです。その名も SharpSmalltalk ということで、さっそくダウンロードしてみました。このページでは、その辺の Smalltalk にまつわるお話を書きたいと思ってます。

以下で紹介したサンプルは、実際のところ動きません。「c:\windows\microsoft.net\framework\v1.0.3705\Config\machine.config が読み取れない」という例外が発生するためです。ちょっと理由はわかりませんが、↓のような .config ファイルを作成してやれば、とりあえず動くようです。


  <supportedRuntime version="v1.1.4322" />;

Hello, World.

ということで、さっそくやってみます。Compiler のページにいくつか簡単なコードが紹介されているので、まずはそれから。以下のようなコードを書いて、hello.sif というファイル名で保存します。あとは、コマンドラインから sst hello.sif で、ビルド、と。


  Smalltalk interchangeVersion: '1.0'!

  Global initializer!
  "Here to add a prereq annotation"!
  Annotation key: 'Prerequisite' value: 'Smalltalk.sif'!

  Global initializer!
  Transcript print: 'Hello, SharpSmalltalk World.'!

Reading HTML file on the web.

解説はあとで。


  Smalltalk interchangeVersion: '1.0'!

  Global initializer!
  "Here to add a prereq annotation"!
  Annotation key: 'Prerequisite' value: 'Smalltalk.sif'!

  Global initializer!
    | url request response sr result |
    url := 'http://www.google.com/'.
    request := System.Net.WebRequest Create: url.
    response := request GetResponse.
    sr := System.IO.StreamReader new: response GetResponseStream.  
    result := sr ReadToEnd.
    Transcript print: result.
    sr Close!

Reading HTML file on the web(use Encoding).

解説はあとで。


  Smalltalk interchangeVersion: '1.0'!

  Global initializer!
  "Here to add a prereq annotation"!
  Annotation key: 'Prerequisite' value: 'Smalltalk.sif'!

  Global initializer!
    | url request response enc sr result |
    url := 'http://www.google.com/'.
    request := System.Net.WebRequest Create: url.
    response := request GetResponse.
    enc := System.Text.Encoding GetEncoding: 'Shift_JIS'.
    sr := System.IO.StreamReader new: response GetResponseStream.  
    result := sr ReadToEnd.
    Transcript print: result.
    sr Close!