F#相談室
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGif n <= 0 then () else begin
print_endline (string_of_int n);
loop (n-1)
end
type mydata = A | B of int * mydata
let rec mydataPrint d =
match d with
A -> print_endline "the end!"
| B (n,d) -> print_endline (string_of_int n); mydataPrint d
let rec mydataMap f d =
match d with
A -> A
| B (n,d) -> B (f n,mydataMap f d)
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGここから検索しる
http://www.google.com/microsoft.html
0008デフォルトの名無しさん
NGNG関数型プログラミング言語ML
http://pc2.2ch.net/test/read.cgi/tech/1012445015/l50
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGmydataMapのうまい使い方がよく分からん。
# let data = B(1, B(2, B(3, B(4, B(5, A)))));;
# mydataPrint data;;
# let f x =
let ret = x * x in
print_endline(string_of_int ret);
ret;;
# mydataMap f data;;
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015リンク
NGNGhttp://research.microsoft.com/projects/ilx/fsharp.htm
http://research.microsoft.com/research/downloads/
0016デフォルトの名無しさん
NGNG関数に括弧をつかわないところがどうも慣れない
0017デフォルトの名無しさん
NGNG関数型言語でゲームか!アツイな!!
>>15
thanx!!
0018デフォルトの名無しさん
NGNG何かメリットは?
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG単なる趣味か
0022デフォルトの名無しさん
NGNGWindows依存?
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG規格が統一されずメンテナンス性が悪化するわけだ。
0027デフォルトの名無しさん
NGNG少なくともSSCLIの動くプラットフォームはサポートされるんじゃない?
0028デフォルトの名無しさん
NGNGUNIXはわからんがLinuxならいけそうだ
http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20030527/1/
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNGC#とか使うより良いかもしれない。
副作用を極力嫌うスタイルは保守が自然とやりやすくなる。
あと、副作用の依存関係を型と同じ様にコンパイラが把握してるので、
最適化にかなり影響する。
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG2. インストールバッチを実行
3. 環境変数 FSHARPLIB を lib にセットする
4. パスを bin に通しておく
以上
0037Hello World
NGNGprint_endline "Hello World!!"
0038Hello World .NET
NGNGlet _ =
Console.WriteLine "Hello World!!"
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGそうか?
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGここで勉強しる
http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/mltext/ocaml.html
0046デフォルトの名無しさん
NGNG.NETのクラスを使ってると旨みが出ないよ。(´・ω・`)
0047デフォルトの名無しさん
NGNGopen Il
let rec print_types tdefl =
match tdefl with
[] -> ()
| tdef::rest ->
print_endline (tdef.tdName);
print_types rest
let _ =
let modul = Ilread.read_binary "Hoge.exe" None in
let tdefs = modul.modulTypeDefs in
print_types (dest_tdefs tdefs)
0048デフォルトの名無しさん
NGNG>>47見ると、全然副作用嫌ってるスタイルに見えないんだけど。
いやそれが悪いということじゃないけどね。
0049デフォルトの名無しさん
NGNGclass EnumTypes {
static void print_types(FS.list tdefl) {
if (tdefl == FS.list.Nil()) {
return;
}
else {
Il.type_def tdef = (Il.type_def) tdefl.get_Cons0();
Pervasives.print_endline(tdef.tdName);
print_types(tdefl.get_Cons1());
}
}
static void Main() {
Il.modul modul = Ilread.read_binary("Hoge.exe", FS.option.None());
Il.types tdefs = modul.modulTypeDefs;
print_types(Il.dest_tdefs(tdefs));
}
}
0050デフォルトの名無しさん
NGNG一度 let で割り当てた値は変更不可能というのがポイント。
C#で例えると、ローカル変数もすべて readonly になるといった感じ。
0051デフォルトの名無しさん
NGNG(・∀・)イイ!
なるほどどねえ
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGMSの言語って覚えることが多すぎて面倒だなあ。
0056デフォルトの名無しさん
NGNGへー(´・ω・`)
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG普及はきついかもね。
少なくともアメリカでは。
0059デフォルトの名無しさん
NGNGLearning OCaml, for C, C++, Perl and Java programmers
http://merjis.com/richj/computers/ocaml/tutorial/
0060デフォルトの名無しさん
NGNGhttp://www.speakeasy.org/~hchomsky/ocaml-win32.html
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG膨大な.NETライブラリを利用できる。
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNGhttp://research.microsoft.com/projects/ilx/fsharp.aspx
0065デフォルトの名無しさん
NGNGopen Il
let print_type tdef =
print_endline tdef.tdName
let _ =
let modul = Ilread.read_binary "Hoge.exe" None in
List.iter print_type (dest_tdefs modul.modulTypeDefs)
0066デフォルトの名無しさん
NGNGlet _ =
List.iter (fun tdef -> print_endline tdef.tdName)
(dest_tdefs (Ilread.read_binary "Test.exe" None).modulTypeDefs)
0067デフォルトの名無しさん
NGNGhttp://www.cl.cam.ac.uk/Research/TSG/SMLNET/
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG実行時エラーとか一般保護エラーも無くなりますか?
0071デフォルトの名無しさん
NGNGドライバを開発できる人間ががくっと減ります。
0072デフォルトの名無しさん
NGNGやっぱりMSの影響力は大きいんだな。
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGどこがオープンソース?
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG.NET1.2と一緒に(ry
0079デフォルトの名無しさん
NGNGpublic delegate T1 Func<T0, T1>(T0 arg0);
で、しかもsealedじゃないから何でもありだし。
型推論に柔軟に対応するためというのはよく分かるんだけど・・・。
0080デフォルトの名無しさん
NGNGILX2ILの苦肉の策。
ILXがネイティブ対応されるまでの我慢か。
0081デフォルトの名無しさん
NGNG今月中に公表するとか書いてあるけど
0082デフォルトの名無しさん
NGNG--genericありとなしでは全然出力されるコードが違いますね。
ってか、--genericなしだとF#の価値が半減のような。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGこの名前は失敗だと思う。
0085デフォルトの名無しさん
NGNG今、common lispを勉強してますが、
MicrosoftのせいでOCamlにも興味がでてきました。
0086デフォルトの名無しさん
NGNGマクロはないと思う
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNGできないっす。
http://research.microsoft.com/projects/ilx/fsharp-release.aspx
> 11 Cannot generate subclasses or implement interfaces except
> through helpers. Workaround: Declare a C# class accepting delegates
> as parameters to its constructor and then these delegates in your
> virtual methods.
0089デフォルトの名無しさん
NGNGおちんちんおいしいのOですか。
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNGつまんね。やる気そがれたじゃんか
0092デフォルトの名無しさん
NGNG意味が分かるような分からないような
0093デフォルトの名無しさん
NGNGx >>8
o >>88
0094デフォルトの名無しさん
NGNGcamlp4 (which stands for pre-processeor and pretty-printer)
F# では使えないけどなー
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG普通に type#method arg って書けないもんかねえ。
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGMSが目をつけてる理由は関数型だからというよりは型推論なんでしょうな。
スクリプトのように書けて、実は型に厳しい。(パフォーマンスも有利。)
で、型推論の根拠をソース以外に外部のXSDに求めるのが
X#の正体ではないかと勝手に想像してみたり。
0101適当にコード書いてみた
NGNGtype tag = { name : string; value : tag_value }
type node = Tag of tag | Node of node * node list
let print_start_tag tag =
print_string ("<" ^ tag.name ^ ">")
let print_end_tag tag =
print_string ("</" ^ tag.name ^ ">")
let print_tag tag =
match tag.value with
Value v ->
print_start_tag tag;
print_string v;
print_end_tag tag;
print_newline ()
| _ ->
print_endline ("<" ^ tag.name ^ "/>")
0102適当にコード書いてみた
NGNGlet rec print_node node =
let rec get_tag nd =
match nd with
Tag t -> t
| Node (n, l) -> get_tag n
in
match node with
Node (n, l) -> let tag = get_tag n in
print_start_tag tag; print_newline ();
List.iter print_node l;
print_end_tag tag; print_newline ()
| Tag t ->
print_tag t
let html = { name = "html"; value = Empty }
let head = { name = "head"; value = Empty }
let title = { name = "title"; value = Value "test HTML" }
let body = { name = "body"; value = Empty }
let p1 = { name = "p"; value = Value "Hello World!!" }
let p2 = { name = "p"; value = Value "This is a pen." }
let document =
Node (Tag html, [Node (Tag head, [Tag title]); Node (Tag body, [Tag p1; Tag p2])])
let _ =
print_node document
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG生産性が高いことで有名だったぞ。
俺的にはOCamlはソースがごちゃごちゃしてるように感じるが。
ここのInput/Outputとか。
http://www.ps.uni-sb.de/~rossberg/SMLvsOcaml.html
0105デフォルトの名無しさん
NGNGocamldocで出力したドキュメントにも型は表示されるから
型を知るためにソースを見直す必要はあまりないんじゃないかと.
0106デフォルトの名無しさん
NGNGおー、これは便利だね。> ocamldoc
0107デフォルトの名無しさん
NGNG自分で書いてみれば分かる。
0109デフォルトの名無しさん
NGNGマネージド環境として、.NETよりOCamlの方がはるかに優れてないか?
0110デフォルトの名無しさん
NGNGhttp://www.bagley.org/~doug/shootout/craps.shtml
0111デフォルトの名無しさん
NGNG恐るべし。
http://www.bagley.org/~doug/shootout/lang/ocaml/
0112デフォルトの名無しさん
NGNG.assembly Test {
}
.assembly extern mscorlib {
}
.closure test() {
.apply (int32) (int32) --> int32 {
ldarg 2
ldarg 1
add
ret
}
}
.method public static void main() {
.locals(
int32 result,
(func (int32) --> (func (int32) --> int32)) 'add',
(func (int32) --> int32) increment
)
.entrypoint
// let add = fun x -> fun y -> x + y
newclo class test
stloc 'add'
0113デフォルトの名無しさん
NGNG// add 3 5
ldloc 'add'
ldc.i4 3
ldc.i4 5
callfunc (int32) (int32) --> int32
stloc result
ldstr "3 + 5 = "
call void [mscorlib]System.Console::Write(string)
ldloc result
call void [mscorlib]System.Console::WriteLine(int32)
// let increment = add 1
ldloc 'add'
ldc.i4 1
callfunc (int32) --> (func (int32) --> int32)
stloc increment
// increment 5
ldloc increment
ldc.i4 5
callfunc (int32) --> int32
stloc result
ldstr "5++ = "
call void [mscorlib]System.Console::Write(string)
ldloc result
call void [mscorlib]System.Console::WriteLine(int32)
ret
}
0114デフォルトの名無しさん
NGNGそれは単に速度が速いというだけじゃん。
しかも、F#じゃなくて、素のOCamlだし。
まあ行数とか見ても少ない方だけどね。
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNGusing System;
delegate RetType Function<RetType, ArgType>(ArgType arg);
class AddFunction {
private AddFunction() {
}
public static Function<Function<int, int>, int> Create() {
return new Function<Function<int, int>, int>(n1) {
return Create(n1);
};
}
private static Function<int, int> Create(int n1) {
return new Function<int, int>(n2) {
return Add(n1, n2);
};
}
private static int Add(int n1, int n2) {
return n1 + n2;
}
}
0118デフォルトの名無しさん
NGNGclass Test {
static void Main() {
Function<Function<int, int>, int> add = AddFunction.Create();
Console.WriteLine("3 + 5 = " + add(3)(5));
Function<int, int> increment = add(1);
Console.WriteLine("5++ = " + increment(5));
}
}
0119デフォルトの名無しさん
NGNGpublic static Function<Function<Function<int, int>, int>, int> Create() {
return new Function<Function<Function<int, int>, int>, int>(n1) {
return Create(n1);
};
}
private static Function<Function<int, int>, int> Create(int n1) {
return new Function<Function<int, int>, int>(n2) {
return Create(n1, n2);
};
}
private static Function<int, int> Create(int n1, int n2) {
return new Function<int, int>(n3) {
return Add(n1, n2, n3);
};
}
private static int Add(int n1, int n2, int n3) {
return n1 + n2 + n3;
}
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGlet _ = form.Controls.Add(new Button())
ってやろうとすると、型が合わないと怒られます。
どーすればいいんですか?
0123直リン
NGNG0124デフォルトの名無しさん
NGNGこれは致命的だな。
let button : Control = new Button()
let _ = form.Controls.Add(button)
でも駄目だったのでお手上げ。
0125デフォルトの名無しさん
NGNG何処の誰が風俗店に出入り禁止をくらったとか、そんな話題で盛り上がってる
人が居るらしい…。
プロでやっている風俗嬢でさえ政治家やタレント等と違い簡単に会えるゆえ個人
情報投稿は重大な人道マナー違反なのに、一個人であるお客の行動を詮索すると
は愚か過ぎる行為ですよね。
なんだか友人が言うにはボクも某有名店で出入り禁止になってるという噂が飛
んでるらしいですが笑止な事です。今現在ボクは何処の店にもそういう事実は
無いからです。(かつて店に誤解を受け、予約禁止になりそうと知ったボクの友
人所属嬢が店への不信で退店を表明し、誤解が解けて店に平謝りして貰ったことは
ある)
店と所属嬢とお客の間で解決する事にネットで関わるなんて馬鹿らしいです
。
0126山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0127デフォルトの名無しさん
NGNG0128山崎 渉
NGNG0129山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNGAからBのフォームをモーダルで表示するにはどういうコードかけばいいですか?
Windowsアプリお勉強中です。
0132デフォルトの名無しさん
NGNGhttp://ukamen.hp.infoseek.co.jp/Programming1/Dialog/index.htm
0133デフォルトの名無しさん
NGNG何かイイ参考書ないでつか?
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG教えていただけませんか?
0136デフォルトの名無しさん
NGNG研究用。ILの関数型言語向け拡張を実装するための実験台。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNGでいいですよね?
0139デフォルトの名無しさん
NGNG「これからは F# がメジャーになる」と勘違いしちゃう人が
出て来そうでまずい。俺的には .NET でも funcitonal できまっせえ
という実証用言語だと受け取っているのだが。
そもそも Caml Special Light => O'Caml を OOPL化 と呼ぶのも
抵抗がある。
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGMSがSimon Peyton Jonesとかえらい人いっぱい雇っちゃったので、
彼等に仕事を与えるためにつくった。
0142デフォルトの名無しさん
NGNGMSは後悔してゐるであらふか?
0143デフォルトの名無しさん
NGNG○あらう
0144デフォルトの名無しさん
NGNGコマカイデツネ,チミハ...
しかし、スレ伸びんなぁ。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGもう用済みなんでねーの?
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGこんなのあるよ。
Microsoft Expands .Net With Xen
http://www.extremetech.com/article2/0,3973,1441657,00.asp
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNGttp://blogs.gotdotnet.com/emeijer/commentview.aspx/f0bdf5c8-ec34-4dbb-b51e-6982a93be2e5
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNGILの .subsystem を0x0002に直接変更。
0155デフォルトの名無しさん
NGNG今頃になって分かった。これで動く。
open System.Windows.Forms
let form = new Form()
let _ = form.Controls.Add(cast (new Button()) : Control);
Application.Run(form)
0156デフォルトの名無しさん
NGNGうおぉ。そうだったのか。まじサンキュー
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGhttp://www.nemerle.org/
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG0161win98
NGNG>Compile-time Requirements: You will need to have one of the following installed
> on your system in order to use the F# compiler:
>・The Microsoft .NET Framework SDK ・・・
>・VisualStudio.NET ・・・
0162デフォルトの名無しさん
NGNGttp://research.microsoft.com/users/schulte/Papers/UnifyingTablesObjectsAndDocuments(DPCOOL2003).pdf
0163デフォルトの名無しさん
NGNG0164名無しさん♯
NGNGttp://blogs.msdn.com/cyrusn/
0165デフォルトの名無しさん
NGNGcomp.lang.functional見た感じでは海外のOCamlユーザ
多そうだから日本もこれから盛り上がるかも。
今から勉強して時代を先取りしてみるか。
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGttp://research.microsoft.com/collaboration/university/europe/Events/AcademicDays/Portugal/2004/Portugal%20Comega.ppt
F#作者のDon Syme氏のプレゼン
ttp://research.microsoft.com/collaboration/university/europe/Events/AcademicDays/Portugal/2004/dsyme-spain-portugal-v5.ppt
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
2005/04/14(木) 21:05:550172デフォルトの名無しさん
2005/04/14(木) 21:24:56ttp://research.microsoft.com/research/downloads/default.aspx
0173デフォルトの名無しさん
2005/07/03(日) 23:46:20ライブラリは.NETのが使えるから問題ないと思うが、言語仕様としてはO'Camlを超えてるのか?
0174デフォルトの名無しさん
2005/07/13(水) 20:28:220175名無しさん♯
NGNGttp://research.microsoft.com/research/downloads/default.aspx
0176名無しさん♯
NGNG・・・けど、どうやって終了するんだろう。
0177名無しさん♯
NGNGこの方面はかなり化けそうね。
0178デフォルトの名無しさん
2005/09/23(金) 21:35:05いつだろう。
そしたらかなり普及しそうだ。
0179名無しさん♯
2005/09/25(日) 19:53:05.NET 2.0 RC対応、fsiでようやくgenericsが使えるようになりますた。
0181デフォルトの名無しさん
2005/11/10(木) 01:35:16うちではインストールに失敗する。
英語版Win2000でも落ちる。
0182デフォルトの名無しさん
2006/01/08(日) 00:22:03ttp://nullpo.2log.net/home/lambda/archives/blog/main/2006/01/07_222152.html
0183デフォルトの名無しさん
2006/01/08(日) 00:52:52自分もインストールしようと思ったけどうまくいかないね。
でもどちらにしてもF#のIDE環境がかなりタコなので、自分
でmakefile書いたほうがいいと思うよ。
0184デフォルトの名無しさん
2006/01/08(日) 01:01:160185デフォルトの名無しさん
2006/02/05(日) 05:12:010186デフォルトの名無しさん
2006/05/03(水) 13:33:21■ このスレッドは過去ログ倉庫に格納されています