パスワードを忘れた? アカウント作成

Yuryuさんのトモダチの日記。 今週も投票をしましたか?

285321 journal

rutoの日記: Haskellの式はかっこで囲ってやると自動でインデントできる

日記 by ruto

なぜ Haskell で 1-liner っぽいコードが出来るのか、ちょっと真面目に考えた

EmacsでHaskell書いてると思った通りにインデントできなくてむきーってなるけど、そういう場合は{;}とオフサイドルールの中間の方法として括弧で囲う方法がある。
例えば

foo
  = (do
      a
      b
      c
      d)

と書くと、emacsのhaskell-modeでは一発でインデントできる。
括弧で囲ってやると構造がインデントによらずに一意になるので、インデントを間違えても変な動作をしなくなる(せいぜいコンパイルエラーになる)。
ダサいけど、;は書きたくないという人向け。

283440 journal

rutoの日記: Scala 2.8 Collections APIを訳しました

日記 by ruto

Scala 2.8ではコレクションまわりのAPIが(互換性を大幅に保ったまま)大きく変わっています。Scala 2.8のコレクションAPIはかなり洗練された設計となっていますが、多くのクラスから出来ているためscaladocやソースだけからの理解は困難です。
Scala 2.8 Collections APIは、Scalaの設計・実装者である(もちろん2.8のコレクションAPIの設計・実装もしています)Martin Odersky氏が、Programming in Scala (邦題: Scalaスケーラブルプログラミング)の共著者であるLex Spoon氏と共にScala 2.8のコレクションAPI について解説した文書です。基本的な設計から各抽象・具象クラスの解説、さらには各クラスの性能特性のまとめJavaのコレクションとの変換2.7からの移行など、Scala 2.8のコレクションについて幅広い範囲をカバーしています。
Scala 2.7についてある程度知っている人を対象としていますが、Scalaを学び始めて基本的な文法を学んだ人が読むのにも適しています。

そんなScala 2.8 Collections APIを日本語に翻訳しました。

Scala 2.8コレクションAPI

日本でのScalaの浸透に少しでも貢献できれば幸いです。

なお、ほぼ同時期にe.e d3si9nさんも翻訳しています。お互いに訳を参考にして翻訳しました。私の訳でわかりづらいところがあれば、ぜひこちらも参照してください。

おまけ: 翻訳メモ

77398 journal

rutoの日記: スクリプト言語にとって、正規言語は速い以上のメリットは無いと思う

日記 by ruto

正規表現より文脈自由文法の方が良いという意見に対する正規表現の擁護
「正規表現が手軽だから」以上が無くて、言語の表現力の話とリテラルとしての正規表現の話がごっちゃになってる気がする。この論法だと、正規表現から上位のクラスの言語用のパーサへ変換する機能を用意されたらそれでいいことになってしまう。

スクリプト言語の機能としての正規言語マッチャは、使う側としては、正規言語(+α)に限れば圧倒的に速くパースできるという以上のメリットは無いと思う。「チューリングマシンが最強」というのは確かで、パーサコンビネータとか手書き再帰下降パーサとかは0型の文法でもパースできて最強だと思う。速度以外は。

もちろん研究者としては機能が制限されてる方がいろいろ性質を保証できたり解析できたりして嬉しいけど、スクリプト言語を使う側にとってそれを生かした便利な機能って、速度とか停止性ぐらいしか今のところないんじゃないだろうか。

速いから正規言語に限るんであって、速度を犠牲にしても良いんなら上位のクラスの言語用の機能だけ用意して、正規表現からそれに変換すればいいと思う。

追記:
見直してみたら、元から正規表現対BNFの話のようです。話をごっちゃにしてたのは私の方だったようです。

45342 journal

tamatukurikeiの日記: ThinkPad s30

日記 by tamatukurikei
ヤフオクでThinkPad s30を購入!

OSはWindows 2000で使用予定.
2000は使用経験が実はない

Windows 3.1→Windows Me→Windows XP→Windows Vistaという感じできたので,触ったことがない.
世間では,安定していてすばらしいOSらしいので楽しみである.

s30は有線LANのモデルで,てかてかの天板でない.たぶんどこかの企業で使われてたビジネスモデルだろう.
機会があれば,mini PCI接続の無線LANカード挿して無線LANモデルに改造したい.

月曜日には届く予定.
43310 journal

rutoの日記: RubyでScalaの_っぽいこと。

日記 by ruto

こんなん作った。hello.rb

これは、

foo1 = procedure do foo(1, _, _) end

と書くと

foo1 = proc do |x, y| foo(1, x, y) end

とほぼ同じことになる。

途中で例外が起きたり、callccを使うと変になるはず。

あと、

procedure do 2.times do p _ end end

は1引数手続きではなく2引数手続きになって、_の値は1回目のループでは1つめの引数、2回目のループでは2つ目の引数になる。

shift/reset言いたかっただけなので、実はもっと簡単に書ける。

def procedure
  proc do |*args|
    old_index = Thread.current[:index]
    old_args = Thread.current[:args]
    Thread.current[:index] = 0
    Thread.current[:args] = args
    begin
      yield
    ensure
      Thread.current[:index] = old_index
      Thread.current[:args] = old_args
    end
  end
end

def _
  Thread.current[:index] += 1
  Thread.current[:args][Thread.current[:index] - 1]
end

これは例外には対応しているけど、やっぱりcallccに対応していない。

454508 journal

tamatukurikeiの日記: コメントアウト 4

日記 by tamatukurikei
#をコメントアウトに使ってらっしゃる方々が/.に多いし,自分も使ってるが,実はfortran使うことの方が多いから,cとか!のほうがしっくりくる.でも,コメントアウトと認識されるかが問題だなぁ・・・・

あえてマイナーなのを使うとなるとどんなのがいいんだろう・・・
455478 journal

tamatukurikeiの日記: LaTeX

日記 by tamatukurikei
fedora8でdvipdfmxが通るまで一苦労.新ドキュメントクラスのインストールとか,windowsならインストーラーで考えずに入れていられたのだが,いざlinuxで一からを初体験すると,\(^o^)/の連続でした.
typodupeerror

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

読み込み中...