Caml for .NET: F# 47
ストーリー by Oliver
分かりやすいネーミング.... 部門より
分かりやすいネーミング.... 部門より
Anonymous Coward曰く、" C# に続き F# なる処理系が。ベースは Caml (Objective Caml) みたいです。個人的には C# より遙かに好印象。(単に Caml が好きなだけ(笑))"
Anonymous Coward曰く、" C# に続き F# なる処理系が。ベースは Caml (Objective Caml) みたいです。個人的には C# より遙かに好印象。(単に Caml が好きなだけ(笑))"
日々是ハック也 -- あるハードコアバイナリアン
なんだCamlか (スコア:2, おもしろおかしい)
(おふとぴ) (スコア:1)
その前にF++が出る必要があるかと(^^;
ところで,C#がトニックならF#はサブドミナントになるのかな?
それから類推するに,C#とF#はやっぱ親和性が高いんでしょうか。
# 上記はジョークですので,技術・音楽の両面からのツッコミを
# よろしくお願いします。すいません。
Re:(おふとぴ) (スコア:1)
F#をルート音とすれば C#は五度の位置関係にあるから、 コードとしては安定している関係かと。
その次に出てくるのが AかA#かでマイナーになるかメジャーになるか・・・
Re:(おふとぴ) (スコア:1)
次はB、E、A…。
Re:(おふとぴ) (スコア:0)
Re:なんだCamlか (スコア:0)
残るは―― (スコア:1)
D#, G#, A#――。
# 平均律を捨てれば、まだいっぱい使える、って何を?
Re:残るは―― (スコア:1)
#すぐに終わって、ついにはどっか~んと自爆しちゃうわけだ
Re:残るは―― (スコア:1)
それでも無印から数えると結構長く続いているじょ...
Re:残るは―― (スコア:1)
「嬰ハ言語(C#)」「嬰へ言語(F#)」
それはさておき、やっぱり「F sharp」じゃなくて「Fis」と読んでしまうのでしょうか?
Re:残るは―― (スコア:1)
Re:残るは―― (スコア:1)
それは 8086 のセグメント:オフセット計算で、表記は異なるのに指し示すアドレスは同じ、みたいでイヤ~ン。
Re:残るは―― (スコア:1)
Re:残るは―― (スコア:0)
Re:残るは―― (スコア:1)
#つまり、みーんなオフトピ状態(笑)
>平均律を捨てれば
これ、平均律かどうか、という問題なんでしょうか?
それ以前に、ピアノでいう「白鍵」「黒鍵」という問題であるような気もするんですが…
また、西洋音階であるかどうか?という問題でもあるような気がするのですが…
西洋音階(いわゆるドレミ)で、かつ平均律じゃない音程のとりかたってのも、色々有りますから。ベルクマイスターとかさぁ…
>まだいっぱい使える
あんまり変なのになると名称がつかなくなる罠。
ただの数字(周波数かなにか)にならざるを得ない罠。
で、ただの数字は商標として認められない罠(以前Intelがハマった罠)。
マイクロソフトは、鍵盤楽器派か? (スコア:1)
オープンソースの管楽器奏者達よ、対抗策としてD♭とG♭を開発するのだ!開発のベースは、えっと、DはDylanのDでGはGuileのGか、、、。しょぼん。
#どっちの意味でも、めんどっちぃのはたいして変わらなかったりして。
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
アルサクやバリサクにはきついでしょうが。
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
A管ならそんなに苦しみませんが(笑) まぁ、B管のペットやクラばかりの環境では辛そう ^^;
Re:マイクロソフトは、鍵盤楽器派か? (スコア:0)
TbはB管なんでしょうか? C管なんでしょうか?
いまだに解りません。
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
あくまで推測ですが B管だと思います。 第1ポジション(一番手前のポジション)での倍音を考えると C管とは思えない...
# しかしこのスレ、音楽の話ばかりだ...
Re:マイクロソフトは、鍵盤楽器派か? (スコア:0)
「C管だっ!!移調読みしないんだからっ!!」
「B管だっ!!Cは6ポジだろがっ!!」
…となるわけでして…。
# 管弦楽に興味の無いヒトごめんなさいごめんなさいごめんなさい
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
>「C管だっ!!移調読みしないんだからっ!!」
管楽器の調性と記譜の話をごっちゃにしているようですが。
さらに言うと、Tbな人はハ音記号がどこに(3、4種類程らしいですが)ついていても大抵読めるって話を聞きました。記譜上では全く移調していなくても、頭の体操はたっぷりできるらしいです。
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
#でも、どれでもC#とF#の音階は面倒臭そうな。
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
指が追いついていきません・・・
#脱線ばかりだとアレなので・・・
F#って名前にしたのは、Functionalな言語って意味でしょうかね?
ほらふきの独り言
Copyright (c) 2001-2014 Parsley, All rights reserved.
Tb は B か C か (スコア:1)
ついでに、Euph と Tuba も B 管ですが楽譜は C のヘ音です。ぼくは Euph 吹きですが、ピストンを押さずに出る音は「シのフラット」だと思ってます。逆に in B の楽譜を読むのは苦手。まだト音の in Es 楽譜のほうが読みやすい (そのまま読める)。
なお、Euph 吹きのあいだでは、B 読み派 (ト音の in B 楽譜が好きな人) と C 読み派 (ヘ音の in C 楽譜が好きな人) がいて、どちらかというと B 読み派のほうが若干多いのではないかと言うのがぼくの印象です。なかにはヘ音の in C の楽譜を B 読み (C のことをレと呼ぶ) するツワモノも若干いるようです。その点、Tb 吹きはほとんどが C 読み派のようです。
Re:Tb は B か C か (スコア:1)
>なかにはヘ音の in C の楽譜を B 読み (C のことをレと呼ぶ) するツワモノも若干いるようです。
kubotaさん基準だと私はツワモノなようです。でも、これって私の年代だと少なくないと思いますよ。学校の音楽の時間に移調読み(どの調でも基音をドと読む)を習ってるんで。この世代だと、Bb管の楽器は、Bb=ドで読んでるのが普通だと思います。
#で、実音の呼称に困ってドイツ式を覚える。アメリカ式はギター用。
#でも、イロハはなぜかほとんど使わない。とかいう妙な領域に突入。
kubotaさんは、学校で移調読みを習った世代じゃないですよね?おそらく。
Re:Tb は B か C か (スコア:1)
Ehphだとト音B/ヘ音C/へ音Bの 3 種類の楽譜が入ってる場合があるのでどれでも気にしないで読めるようになりました。ついてにHornとかSaxのパートを奪い取る(笑)クセがあったのでト音F/ト音Esも普通に読んでいました。慣れだけの問題なのでツワモノでなくても読めますよ。特に自分のパートの練習をするより他人のパートを吹いて遊ぶクセのある人なら ^^)
# ちなみに中学ではEuphとOboeを掛け持ちで吹いてた...
## 高校に入ってViolaにまで手を出してたし... :-)
よその楽譜を奪う (スコア:1)
Euph 用楽譜でいえば、 楽譜そのものがヘ音B、というのは、いままで1回しか見たことがありません。 ト音Bの楽譜しかない、というのも数回。たいていは、ヘ音Cのみか、 ヘ音Cとト音Bの両方が入っているかのどちらかです。
奪う、ということでいえば、バスーン、テナサク、バリサク、 ホルン、バスクラ、くらいの優先順位かな。ホルンはもっと高い 優先順位にしたいんだけど、in F の楽譜を読むのが苦手なのと、 演奏のほうの体力がもたないのとで、ちょっと遠慮ぎみ。 バスーンの優先順位が高いのはまあ当然ですが。 ちなみにオーボエもバスーンも、間近で実物を見る機会は大学に入るまで ありませんでした。(さらに、去年はペダルティンパニとチャイムと ドラに初めて手で触れました)。
どちらにせよ、移調楽譜は苦手で、in B の楽譜も、やると決まれば in C に書き換えるくらいです。いろいろ読める人は尊敬します。
トランペットなんかだと、調の違う何本かの楽器かける何種類もの 楽譜、の組み合わせを演奏できたりする人がいて、感動的です。
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
それは新規開発の言語の名称としては採用されにくいのではないでしょうか。
"#" は半音「上がる」ので、上昇や進歩に結びつけて使われているいるのだと思います。
"♭" は、半音「下がる」ので、下降, 後退, 機能限定版のイメージが出てきそう。
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
flatだけに広がりのある(拡張性に富んだ?)言語にもなりそうです。
でもなによりも、(PCの)キーボードに♭が無いのが致命的かと。
日本限定にして、\->\みたいに$->♭に置き換えるとかどうでしょう。
そうすれば隣に並ぶし。名前は、日本語音階Shift-JISキーボード
ほんと、何がシフトするんだろう(笑
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
Re:マイクロソフトは、鍵盤楽器派か? (スコア:1)
までは判るけど、それがどうして、
>鍵盤楽器派か?
鍵盤に繋がるんですか?
弦楽器だって有るのに。
#どうでもいいが俺が弾けるのは(鍵盤と)ギター類だけ。
#5度調弦のバイオリン族は全く受けつけませんでした(^^;;;;
よだん:
金管は疎いんで便乗質問。
TRONもといトロンボーンにも、B管とかいう言いかたは有るんですか?
あんな無段変速(笑)な奴にも?
>対抗策としてD♭
DelphiをCに近づけたような言語でしょうか?(笑)
そういや無関係とは思いますが次期Delphiは.NET対応だそうです。ぉぃぉぃ…
おふとぴ:トロンボーンの調 (スコア:0)
>金管は疎いんで便乗質問。
>TRONもといトロンボーンにも、B管とかいう言いかたは有るんですか?
>あんな無段変速(笑)な奴にも?
その辺りは他の楽器と変わらずいくつかの調のものがあります。
構造がシンプルである分、他の楽器よりも調の種類が多い
なぜF#か? (スコア:1)
#.Netって色んな言語をサポートすることで、間口の広いプラットフォームを目指すと同時に、
#次世代のプログラム環境としてどんなものが良いかを模索してたりするんだろうか?
Re:なぜF#か? (スコア:0)
まじめな話 (スコア:1)
元ネタのリンクを見てみたけれど、英語がよーわからんので いまいちピンと来ません。
# っつう人が多いから『おもしろおかしい』ネタばかり増えるんだろうけど。
誰か「こんな感じ」っての、教えてよ。
Re:まじめな話 (スコア:2, 参考になる)
ヨタですが、ラクダをPerlに奪われて悔しい思いをしてるんではないかと邪推してます(笑)。ここ [caml.org]を見ても、やはりラクダだし。
それはさておき、「強い型の関数型言語でMLのお仲間」だそうですから、系譜としてはLisp系ってことになるのかな?(よくわかってない)
Re:まじめな話 (スコア:1)
つまり、あらゆる変数、関数の型を言語処理系が押えているので、ありがちでしかも意外と見付かりにくい、型の誤りによるバグをコード実行前(構文解析直後)に検出する、というのが一番の強みではないかと。
#でも、これはMLの特徴で、camlがそこからどんだけ進化しているかチェックしてないっす。
#一つにはオブジェクト指向対応なんだと思いますが。
あ、ちなみに言語としての特徴はLispの系譜を引いていますが、Lispみたいにカッコまみれの構文じゃないです。
#あれはあれで嫌いじゃないですけど。
Re:まじめな話 (スコア:1)
Re:まじめな話 (スコア:2, 参考になる)
直和型について、何がよいのかを C と比較して例だけ書いてみます。「x+y」のような「数式」を扱うプログラムを書いているとして、型 expr を
type expr = Const of int | Var of string | Plus of expr * expr | Times of expr * expr
のように定義しておくと、 Const(100) とか Plus(Var("x"), Var("y")) とかが expr 型の値として使えるようになります。
C で同じようなことをするなら、
struct expr {
int tag; /* 0:Const, 1:Var, 2:Plus, 3:Times */
union {
int cnst; /* tag==0 のとき有効 */
char *var; /* tag==1 のとき有効 */
struct { /* tag==2 || tag==3 のとき有効 */
expr *x;
expr *y;
} operands;
};
};
のようになるでしょう。 tag の値が0以上3以下であることや、 tag の値と他のフィールドの使いかたが合っていることは、プログラマが注意していなければなりません。
とくに、この型の値を受け取って処理するとき、 C では switch 文を使って書くことになると思いますが、そうして書かれたプログラムを読む際は、「この switch 文は本当にすべての場合を処理しているのだろうか?」ということを人間が意識しながら読まなければならず、負担がかかります。
このようなとき、 Caml ではパターンマッチ(match 式)という構文を使って書きます。すべての場合を処理しないパターンマッチは普通使わないので、コンパイラが警告を出してくれます。そのため、警告が出ないよう行儀よく書かれたプログラムを読む際、パターンマッチですべての場合が尽くされていない可能性を心配する必要がありません。
直和型だけだと「Pascal でいいじゃん」と言われるかもしれませんが、 Caml はほかにもいろいろ素晴らしいです。高階関数の扱いが簡単なのもいいです。
鵜呑みにしてみる?
ついに日の目を・・・ (スコア:1)
(応用によりますが)とても綺麗にプログラミングできる言語ですので
皆さまもぜひこの機会に触れてみてください。
型は素晴らしい(ぉ
でも、取っ付きが悪いので結局皆から無視されるという罠。
しかし、GUI ライブラリも整うのでしょうし、
ML ユーザとしては言うことなしです。
これで、安心して世間向けのソフトを Caml でかけます。
# いままでは Win 上でも TK or GTK だったのでした
Re: ついに日の目を・・・ (スコア:2, 参考になる)
.NET 用の ML を出すと言っても、所詮“なんちゃって ML”に違いない、と思っていたので、簡単な例 [microsoft.com]を見て、案外 ML なので驚いています :)
OCaml との比較 [microsoft.com]によると、 F# では OCaml と違い、モジュールで型を type t = int のように定義しておいて、 signature に type t と書くことで型の定義を隠す、というのができないそうです。一方、 type t = T of int と書けば type t という signature を与えて型の定義を隠すのは OCaml と同様に可能だそうで、 F# の実装を垣間見たような気がします。 GUI ライブラリではありませんが、 Windows 版 OCaml で Win32 API の一部を使うための OCaml-Win32 [speakeasy.org] というラッパーがあります。使ったことはありませんが。
鵜呑みにしてみる?
Re:ついに日の目を・・・ (スコア:1)
次はScheme!
# 僕は情報科学な人間ではありませんが。
Schemeもあるでよ (スコア:1)
Scheme や SML 、 Haskel なんて名前も。
F# もここらへんの .NET のアドイン言語処理系の一種なのでしょうね。
・・・でも、このページには載っていないですね。
F# は .NET の中でいったいどういう立場なのかが気になります。
Re:Schemeもあるでよ (スコア:0)
Haskellだよ。SMLがMachine Languageになってるのはなんか意味があるんだろうか?
Re:ついに日の目を・・・ (スコア:0)
きちんと計算機科学を勉強した人なら大学1年のときにかならずやるもののはずだが…
Re:ついに日の目を・・・ (スコア:0)