F#で試してみた
F#つーかOCamlつーかどっちでもいいけどどっちも全然わからねー。
書くの大変すぎる。つーかOCamlがハイライトに対応してるのがおどろき。
#light open System open System.Windows.Forms open Printf type Form1 = inherit Form as base new () as this = { } then this.Text <- "Form1" this.Name <- this.Text this.SuspendLayout() let button1 = new Button() button1.Text <- "button1" button1.Name <- button1.Text button1.UseVisualStyleBackColor <- true button1.Click.Add(fun e -> printf "click!\n") this.Controls.Add(button1) this.ResumeLayout() override this.Dispose(disposing) = printf("dispose\n") base.Dispose(disposing) #if COMPILED [<STAThread>] do Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(false) Application.Run(new Form1()) #endif
んで、これも動きますね。IronRubyだけoverrideが無理なんだな。
か、無理じゃなくてやり方の問題なのか。
IronPythonで試してみた
IronRubyで試したフォームの表示をIronPythonでもやってみた。
CodePlex Archive
もうバージョンが2.0Beta3までいってんのね。
import clr clr.AddReference('System.Windows.Forms') from System.Windows.Forms import * class Form1(Form): def click(self, a, b): print("click!") def __init__(self): self.Name = self.Text = "Form1" self.SuspendLayout button1 = Button() button1.Name = button1.Text = "button1" button1.UseVisualStyleBackColor = True button1.Click += self.click self.Controls.Add(button1) self.ResumeLayout def Dispose(self, disposing): print(disposing) Form.Dispose(self, disposing) Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(False) Application.Run(Form1())
Disposeがちゃんと動いた。やっぱりIronPythonのが完成度高いのな。
ironruby
via IronRuby アルファのリリース – 荒井省三のBlog
ironrubyのアルファ試してみた。
require 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' class Form1 < System::Windows::Forms::Form def layout p "layout" self.SuspendLayout yield self.ResumeLayout end def initialize p "initialize" self.Name = self.Text = "Form1" layout{ button1 = System::Windows::Forms::Button.new button1.Name = button1.Text = "button1" button1.UseVisualStyleBackColor = true; button1.Click{ p "click!" } self.Controls.Add(button1) } end def Dispose(disposing) p disposing end end System::Windows::Forms::Application.EnableVisualStyles System::Windows::Forms::Application.SetCompatibleTextRenderingDefault(false) System::Windows::Forms::Application.Run(Form1.new)
これが普通に動いた!素敵!
フォームが出てボタンクリックするとちゃんとコンソールにメッセージが出るよ。
まえに試した時はp位のメソッドから使えなかった気がしたけど今回は余裕です。
まあRailsがちらっと動くくらいの勢いらしいので当たり前かもだけど。
ボタンのイベント直にブロックいけるとかはナイスだよね。
Disposeは良く分からないつーか.Netが良く分からない。
けどでも応援したい気持ちになりました。
Rubyで同値関係を求めるパズルやってみた。
Rubyで同値関係を求めるパズル - rubyco(るびこ)の日記
今回もid:sumimさんは既訳なわけですが気にせず。
#!ruby -Ku require 'set' text = "少女=リズ 少年=ペタ 楽天家=ゲルト 老人=モーリッツ ジム=ジムゾン アル=商人 村長=ヴァルター 木こり=トーマス 旅人=ニコラス ならず者=ディーター 少女=リーザ 行商人=アルビン ジムゾン=神父 女将=宿屋の女主人 ヴァルター=ヴァル 商人=行商人 少年=ペーター 翁=モーリッツ 羊飼い=カタリナ パン屋=オットー 青年=ヨアヒム 村娘=パメラ 農夫=ヤコブ 宿屋の女主人=レジーナ リー=少女 ならず者=ディー ペー太=ペタ" text = "a=b A=D b=c A=B B=C a=A " group = [] text.split(/\n/).each{|line| left, right = *line.split(/=/) group.delete(set_a = group.find{|set| set.include?(left)} || Set.new) group.delete(set_b = group.find{|set| set.include?(right)} || Set.new) group << ((set_a+set_b) << left << right) } p group.map{|set| set.sort}
標準入力じゃないとか出力形式とかは見逃してください。
それよりもgroup.delete(a = group.find{cond})の部分はそういうメソッドってないんでしたっけ。
配列から条件にあった要素を取り出すイメージなんですけど。
どーかくよ?
久しぶりにどう書く?やってみた。
http://ja.doukaku.org/comment/6703/
比較しないソートってなんなんだなぜなんだつーか矛盾じゃないのかと興味惹かれて読んだんだけど
結局配列に判断任せて暗黙に比較期待してる気がして残念だった。
いや2,3のバケットソート以外のコードは読んでないから驚愕のソートがあるのかも。
subversion updateの日付、時間指定
svn up -r '{2008-01-01 00:00}'
これ書式をいつも忘れるんだよね。