kiyoka.2008_09_03 RSSPLAIN

Related pages: !kiyoka.blog.list kiyoka.2009_02_28 kiyoka.2010_10_04 !kiyoka.blog.2010_10 !kiyoka.blog.2009_02 !kiyoka.blog.2008_09
555555555555555555555555555555555555544455555555435555544555555555355
5

[言語] そろそろオレ言語でもやっておくか(3)

5

以前からRubyの構文を見たり、Gaucheのリファレンスマニュアルを見たりして妄想中。

5

こんな風に書ければいいなぁ。

5
 注意:全体の構文の辻褄を会わせようとはしてません。雰囲気で希望だけを書いていっています。
5

 

5

FizzBuzz

5

ほぼRubyの様に書けるとうれしい

5
def fizzbuzz( num )
5
  if (0 == x % 15)
5
    "FizzBuzz"
5
  elsif (0 == x % 3)
5
    "Fizz"
5
  elsif (0 == x % 5)
5
    "Buzz"
5
  else
5
    num.to_s
5
  end
5
end
5
5
print (1..100).map { |num|
5
  fizzbuzz( num )
5
}
5

 

5

 

5

関数定義

5

 

5
defを使って
5
def add1( x )
5
  x + 1
5
end
5
add1( 5 ) # => 6
5

 

5
ブロックはそのままlambdaになる
5

JavaScriptの様に代入可能

5
add1 = { |x| x + 1 }
5
add1( 5 ) # => 6
5

 

4

ブロック

4

 

4
名前付きブロックはSchemeの named let(letrecでもいいかな)に置きかえられる
5
loop { |arg|
5
  if eof?(arg)
5
    last
5
  else
5
    loop(read-char())
5
  end
5
}
5

 

4
RubyのブロックはSchemeのlambdaすれば良いのでは
3
print open( "sample.txt" ) { |f|
5
  f.readlines.map-with-index { |index,str| }
5
    index.to_str + str
5
  }
5
}
5

 

4

オブジェクト

4

 

5
Gaucheでオブジェクト定義されている型のリテラル
5
 "10".to_i  # => 10
5
 10.to_s    # => "10"
5

 

5

まだまだ、多値をどう扱うとか、配列やハッシュがどう記述できたら嬉しいかとか、#t #fはどうするか、nilはどうするか、どうやったらオープンクラスにできるかなど、課題は色々ある。

5

今後思いついた順に書いていく予定なので、お気楽に眺めてもらえればと思う。

5

 

5

このシンタックスでGaucheプログラミングが可能になれば、ひらがなの名前を名乗る若い方たちがGaucheやSchemeにに興味を持ってくれるんではないか。甘いかな...

5

それを目的とするなら何か方向性が間違っているかもしれないけど。

3

巷で言われているようにオレ言語は自分が楽しむためにあると思うが、他にも、私にとってはSchemeのマクロまわりを深く理解する教材としての意味も大きいだろう。

5

 

5

...comment disabled...