X



【.NET】F#について語れ2【OCAML】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2011/05/01(日) 02:46:49.52
MSResearchから出てきた.NETで使える関数型言語のひとつF#
OCAMLの流れを汲むこの言語、いろいろと面白そうなことができそう。
そろそろ日本語の情報が充実してきそうなこの言語について、幅広く語れ。

http://www.fsharp.net/

前スレ
【.NET】F#について語れ【OCAML】
http://hibari.2ch.net/test/read.cgi/tech/1186030985/

関連スレなどは >>2-
0004デフォルトの名無しさん
垢版 |
2011/05/01(日) 03:34:36.83
Windowsでのインストールは、>>1から

Mac/LinuxでF#を使うにはmonoが必要です。
http://mono-project.com/
IDEにMonoDevelopを利用するなら、現時点ではmono-2.6系が必要です。
mono-2.10.1以降でF#が統合されていますので、IDEが必要ないならそのままCLI環境が使えます。

なんにせよ茨の道ですので、まずはブラウザ環境で実行できるTry F#のTutorialsを試しましょう。
Windowsでも(C#やCと組み合わせるなら、VS2010 C#/C++ Expressと) VS2010 Shell、F#2.0を組み合わせた
無償のIDE環境が使えます。
0005デフォルトの名無しさん
垢版 |
2011/05/01(日) 03:42:19.97
現在の最新版について
http://blogs.msdn.com/b/fsharpteam/archive/2011/04/22/update-to-the-f-2-0-free-tools-release-corresponding-to-visual-studio-2010-sp1-april-2011-ctp.aspx
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b598327-9748-4052-884a-6ee737380dcd

・必要用件
サポートするOS:
Windows 7;Windows Server 2003;Windows Server 2008;Windows Server 2008 R2;Windows Vista;Windows XP
必要な環境:
.NET Framework 2.0 or an equivalent CLI implementation(Xbox 360, and Mono on Mac, Linux and other platform).
対応するソフトウエア(オプション):
Visual Studio 2010 Shell
0007デフォルトの名無しさん
垢版 |
2011/05/01(日) 10:03:33.09
言語の特徴としてはScalaとF#はそっくりだと思う。

*型推論:
 F#,Scala -> ◯
 C#,Java -> △,×
*代数データ型:
 F#,Scala -> ◯
 C#,Java -> ×
*パターンマッチ:
 F#,Scala -> ◯
 C#,Java -> ×
nullの廃止
F#,Scala -> ◯
C#,Java -> ×
モナド:
F#,Scala -> ◯
C#,Java -> ×
高階関数:
F#,Scala -> ◯
C#,Java -> △,×
変数:
F#,Scala -> デフォルトで破壊できない
C#,Java -> デフォルトで破壊できる
対話環境:
F#,Scala -> ◯
C#,Java -> ×

JavaからScalaへの大移動が始まっているのと同様のことがC#からF#に起こるに違いない!と言うのも本当かもしれない。
---------
要望があったやつ追加
0008デフォルトの名無しさん
垢版 |
2011/05/01(日) 11:06:11.34
>>7
名古屋ではF#が結構使われているという話を聞いたんだけど、やっぱり
自動車関係の仕事が多いからなのか?
0011デフォルトの名無しさん
垢版 |
2011/05/01(日) 13:39:03.13
>>2, >>4 TryF# もよいけど、Silverlight入れたくない人やsmart phoneな人は
IdeOneも使える事を知っとくと良いよ。

hello worldを書いてみた。
http://ideone.com/ze0wq (こうやってソースと実行結果を貼ることもできる)
0012デフォルトの名無しさん
垢版 |
2011/05/01(日) 18:56:09.06
コード共有するのには、IdeOneみたいなサービスがいいけど、
F# InteractiveのWebコンソールとしては、これが便利かも。

Try F# in your web browser
http://tryfs.net/

0013デフォルトの名無しさん
垢版 |
2011/05/02(月) 23:26:40.62
そもそもなんでF#はF#という名前になったの?
FはFunctionのF?
あとC#がC++++から#になっているのは理解できるけど、
F++はもちろんF言語なんて聞いたことがないんだけど。
0024デフォルトの名無しさん
垢版 |
2011/05/09(月) 19:18:09.17
scalaとF#使うならどっち?
0025デフォルトの名無しさん
垢版 |
2011/05/09(月) 20:41:26.84
>>24
MSならF#、それ以外ならScala。
構文は全然違うけど言語パラダイムはそっくりだから俺は両方勉強してるぜ。なかなかためになる。
0026デフォルトの名無しさん
垢版 |
2011/05/09(月) 22:19:12.87
誰かC#とF#の比較してくれねーかなー
0027デフォルトの名無しさん
垢版 |
2011/05/09(月) 23:43:25.51
違いすぎる→そんなに違わないな→やっぱ違うわ→まあ、同じとも言えるな。こんな感じが延々と続く。C#とF#の比較。
0029デフォルトの名無しさん
垢版 |
2011/05/10(火) 14:09:41.30
>>7の「高階関数」でC#が△になってるのはなんか理由あんのかな
っていうか、「ファーストクラスの関数」でよくね

tail call elimination
nested functions
automatic currying
cons, tuple
list comprehension
あたりも比較項目につけくわえていい気がする
0032デフォルトの名無しさん
垢版 |
2011/05/10(火) 23:07:45.67
>>29
*tail call elimination
Java,C# -> ×
Scala,F# -> ○
*nested functions
Java,C# -> ×,△
Scala,F# -> ○
*automatic currying
Java,C#,Scala -> ×
F# -> ○
*cons, tuple
Java,C# -> ×
Scala,F# -> ○
*list comprehension
Java,C# -> ×
Scala,F# -> ○
0033デフォルトの名無しさん
垢版 |
2011/05/10(火) 23:23:15.17
Actorモデル
Scala->○
F#->○に近い△
C#,Jave->×

って感じ?ちょっと不勉強なので正確かわからん。
0034デフォルトの名無しさん
垢版 |
2011/05/10(火) 23:50:49.02
>>32
Scala は JVM の制限とかで tail call elimination ができないときがあるような
@tailrec アノテーションをつけておけば、できかなったときは教えてくれるけど

Scala は list comprehension あるんだっけ
for 式だったら、あれはどちらかというと Haskell の do に近いような
0035デフォルトの名無しさん
垢版 |
2011/05/11(水) 05:38:03.25
>>32
tail callは64ビット版.NET Framework は、ILがTailとマークしてなくても最適化してくれる(制限あり)。
あと、LINQはある意味list comprehensionsの一種なので、C#が×は納得いかない。
0036デフォルトの名無しさん
垢版 |
2011/05/11(水) 09:09:48.47
>>35 LINQでlist comprehension できるのか。知らなかった。
Haskellでの[x+y | x <- [0..9], y <- [0..9], x<y] みたいなのもLINQを使えば書けるのか?
0037デフォルトの名無しさん
垢版 |
2011/05/11(水) 09:21:52.16
LINQだと
from x in Enumerable.Range(0, 10)
from y in Enumerable.Range(0, 10)
where x < y
select x + y
とかそんな感じだろう
0038デフォルトの名無しさん
垢版 |
2011/05/17(火) 09:29:46.65
だれかF#でMonotouch開発しようとしてる人とかおらん?(´・ω・`)
F#にMonotouchが対応するのって、そもそも技術的に難しいんだっけ? Dictionary<int,Hoge>とかを使えないとかの制限にからんで。
それともF#なんかマイナー言語相手にしてる暇ねーぜヒャッハーってだけ?
FSharp.CoreとかのライブラリーをILAssembly使ってターゲット変えてゴニョゴニョすれば動くようになるとか言ってる人もいたんだけど。
Silverlightで同じようなことしてる人のBlogあったんだけどリンク切れちゃってた。
暇な人は"Reusing-NET-Assemblies-in-Silverlight"でぐぐって最初のエントリーのキャッシュ見てくんなまし。
0039デフォルトの名無しさん
垢版 |
2011/05/18(水) 00:17:22.59
monoは今レイオフされたり会社設立したりと本体がゴタゴタしててそれどころじゃないんだろ
0040デフォルトの名無しさん
垢版 |
2011/05/18(水) 08:05:24.37
>それともF#なんかマイナー言語相手にしてる暇ねーぜヒャッハーってだけ?
被害妄想?
0042デフォルトの名無しさん
垢版 |
2011/05/26(木) 01:34:35.70
しかしまあF#ってScalaほど必要とされている感がないんだよなー
なまじC#がよくできてるから
0043デフォルトの名無しさん
垢版 |
2011/05/26(木) 01:37:10.04
企業の後ろだてのある言語じゃなく、1研究社が作った言語が注目集めるとかおかしいだろ。
どんだけJavaはアレなんだよ。
0044デフォルトの名無しさん
垢版 |
2011/05/26(木) 08:00:06.97
>>42 確かにScalaは多くのJava技術者に注目を浴びているけど、Scalaいいって
言う人の言うことはそのままF#にも当てはまるんだよね。
ScalaがF#に比べて人気ある理由はC#がJavaより良くできているという以外に
構文がJavaから大きく離れてはいないという点があると思う。Javaコードを

コピペして微修正すればScalaコードとして動くし、Scalaコードを見てもある程度
読めそうな気になるから移行しやすいんだよね。
0045デフォルトの名無しさん
垢版 |
2011/05/26(木) 08:01:26.91

一方F#は構文が違いすぎるし、初見だと全然読めない。このとっつきにくさが
結構効いているんじゃないかな。

でもF#は関数型言語としてScalaよりずっといい線行っている(構文はキモいけど)
ので、Scalaへの大移動が現実になったときC#erはF#への移動を準備すべき。
C#erがレガシーな理由のみで残りつづけて老害とならないようになってほしい。
0046デフォルトの名無しさん
垢版 |
2011/05/26(木) 22:48:33.47
ScalaはGood Java。Javaに取って代わることを目標としているマルチパラダイム言語。
F#はあくまでもC#の補完。.NETファミリーの関数型言語の位置づけ。

scalaは関数型的な使い方をしなくてもいろいろ遊べる。
最初の関数型言語にScalaを選んでしまった場合、
Good Javaの部分だけで腹いっぱいになって関数型までたどり着けないことが多い。
0047デフォルトの名無しさん
垢版 |
2011/05/26(木) 23:11:20.22
Scalaは、未来のJavaを先取りした言語と表現してるが、
Scalaと同じ機能がある未来のJavaは構文がもっと複雑なんだろうな。
0048デフォルトの名無しさん
垢版 |
2011/05/27(金) 00:43:20.31
Scalaは関数型ってだけじゃなくてオブジェクト指向言語としてもJavaより進んでるのがウケてる理由の一つの気がするな
0049デフォルトの名無しさん
垢版 |
2011/05/30(月) 19:59:14.67
C#もまだ未熟なんだけどF#に手を出してみたよ!!
で、F#難し過ぎて、はやくも挫折しそうなんだけど・・・
ちょっと質問。

クラスのスコープ内に関数を定義したかったらC#の場合、こうできる。
class 振り分け{
double[] ratio;
public 振り分け(){
initRatio();
}
private initRatio(){うんたらかんたら}
}

同じことをF#でやる場合staticなメンバにしないといけないのかな?
type 振り分け=
class
val mutable ratio: float[]
static member initRatio=うんたらかんたら
new(){ratio=initRatio}

うーん、ようわからんwww
0050デフォルトの名無しさん
垢版 |
2011/05/30(月) 20:03:43.87
F#の嫌なところを1個見つけたよ。
インデント?空白?によって
ブロック的なものが決まることかなぁ。
だから、必然的に自動整形ってできないんだよね?
複数行選択後のtab/shift+tabができなかったら、
発狂するレベルだねw

あとは、クラスを定義する時の修飾子の多さも、ちょっとうんざりだよね;;
どういう書き方が一番エレガントなんだろう・・・

関数を定義する順番に依存しちゃうってのも、なんというか・・・
そこら辺はやっぱりscalaの方が上っぽい?
0051デフォルトの名無しさん
垢版 |
2011/05/30(月) 22:37:13.86
>>50
・オフサイドルールはうつくしい。まだまだシロートのようだな
・クラスあんまし書かないのがF#流だから木にスンナ
・偽関数型言語でよければScalaでおk
0052デフォルトの名無しさん
垢版 |
2011/05/30(月) 22:48:20.11
>>51
カッコよりはインデントの方が良いとは思うが・・・
自動整形欲しいよorz

クラス使わないって厳しくない?

Scalaのどの辺が偽なの?F#も偽だと思うけど。
0053デフォルトの名無しさん
垢版 |
2011/05/31(火) 00:54:09.98
>>49
type Foo() =
    let initRatio() : float array = Array.map ( (*) 2.0 ) [|1.1;2.2;3.3|] 
    let mutable ratio = initRatio()
    member x.Say() = printfn "%A" ratio

let _ =
   let foo = new Foo()
   foo.Say()
0054添削お願いします
垢版 |
2011/05/31(火) 18:17:18.40
namespace Algebra

type Vector(elements: float[])=

member this.size=elements.Length
member this.elements=elements
member this.Item
with get i = elements.[i]
member this.squaredNorm=Vector.dot(this,this)

static member (~-) (v: Vector)=
new Vector([| for i in 0 .. v.size-1 -> -v.[i] |])

static member OP2 (v1:Vector) (v2:Vector) op=
new Vector([| for i in 0 .. v1.size-1 -> op v1.[i] v2.[i] |])

static member (+) (v1: Vector, v2: Vector)=
Vector.OP2 v1 v2 (fun x y -> x+y)
//new Vector([| for i in 0 .. v1.size-1 -> v1.[i]+v2.[i] |])
static member (-) (v1: Vector, v2: Vector)=
Vector.OP2 v1 v2 (fun x y -> x-y)
static member (.*) (v1: Vector, v2: Vector)=
Vector.OP2 v1 v2 (fun x y -> x*y)
static member (./) (v1: Vector, v2: Vector)=
Vector.OP2 v1 v2 (fun x y -> x/y)
0055添削お願いします
垢版 |
2011/05/31(火) 18:19:35.69

static member (*) (a: float, v: Vector)=
new Vector([| for i in 0 .. v.size-1 -> a*v.[i] |])
static member (*) (v: Vector, a: float)=a*v
static member (/) (v: Vector, a)=(1./a)*v

static member dot (v1: Vector, v2: Vector)=
Array.reduce (fun x y -> x+y) (v1.*v2).elements

override this.ToString() =
"("+(Array.fold (fun (x:string) (y:float) -> x+","+string(y))
(string(elements.[0])) elements.[1..])+")"
0056添削お願いします
垢版 |
2011/05/31(火) 18:22:50.97
インデントが全部消えてごめんなさい。

疑問点
・OP2をletで定義できないのはなぜだろうか?
・intからfloatへの変換は自動でできないのだろうか?
0057デフォルトの名無しさん
垢版 |
2011/05/31(火) 21:12:59.18
関数型の本質は型推論によって、関数が気軽に定義できることだろうか?

例えばList.reduceはJavaでもC#でも、簡単に実装できる。
だけど、気軽に使うためには、
foldに与える関数を気軽に定義できなきゃいけない。
T arg_reduce(T t, S s)
こういう関数を簡単に定義できる枠組みを与えるのが関数型言語なんだろうか?
0058デフォルトの名無しさん
垢版 |
2011/05/31(火) 22:05:41.56
>>56
>・OP2をletで定義できないのはなぜだろうか?

以下のページの「let バインディングと do バインディング」が参考になるかも。
ttp://msdn.microsoft.com/ja-jp/library/dd233205.aspx

>・intからfloatへの変換は自動でできないのだろうか?

「プログラミングF#」の「2.1.3 変換処理」に、
「F#言語は暗黙的な型変換を行わないことを1つの方針としています。」
とか書いてあるんで無理なんじゃないかな。
0059デフォルトの名無しさん
垢版 |
2011/05/31(火) 22:51:27.68
>>58
>静的メソッドからはこのフィールドにアクセスできません。
って書いてありました。ありがとう。

それはそうとdoバインディングってなんだろw
0061デフォルトの名無しさん
垢版 |
2011/06/01(水) 00:00:04.86
>>60
クラスブラウザがVSに実装されるまでは大規模開発が難しいのと
GUIエディタが無い現状はC#の代替にはならないかな、と思った。

F#は関数をさくさく作れる。
C#のクラス定義は単純明快だけど、
F#のクラス定義の方法は難解で、冗長で、読みにくいが、改行は少ない。
F#のyieldは便利。F#の()は読みにくい。F#のSeqは美しい。
F#は基本的に読みにくい。
0062デフォルトの名無しさん
垢版 |
2011/06/01(水) 00:26:26.68
>>61
F#のクラス定義の方法は
難解で読みにくいってのはまあ慣れと好みだが
冗長でってのはどうかね?

C#のクラス定義は単純明快ってのは
私はC#のクラス定義に慣れているんです
って以外に意味を持たない主張に思えるが。
0063デフォルトの名無しさん
垢版 |
2011/06/01(水) 01:15:18.81
>>62
memberは明らかにいらない子
0066デフォルトの名無しさん
垢版 |
2011/06/01(水) 09:32:09.49
>>64
クラスを定義してるのが明らかなのだから、
memberという修飾子はいらない。
あと、そもそもletが冗長なのと
副作用がないならnewを省略したい。

下記のようなシンプルさが欲しい。
class A(a:float)
add b = A(a + b)
minus b = A(a - b)
inc = add 1
dinc = this.inc.inc

この場合、IDE側でクラス名と関数名に色をつけてくれないと
クソ読みにくい。オフサイドルールの欠点。

あとandもクソ仕様。
0068デフォルトの名無しさん
垢版 |
2011/06/01(水) 18:40:51.63
F#やってて、便利と思うのは
関数の中に関数をかけることだな。
しかも、F#における関数はOOPでいう関数ではなく、
OOPのクラスに相当する。

逆に不便だなって思うことは、共通して使う関数を作った時に
どこへ置けばいいかわからないこと。F#はスコープの制御がダメだね。
0069デフォルトの名無しさん
垢版 |
2011/06/01(水) 20:34:34.08
>>65
OCaml互換。C#の人かな。\x ->ならまだしもx ->はさすがに無理くねーか。
>>67
気持ちはわかります。

>>66
クラス内にはletとdoもかけるぞ。あとコンストラクタはメンバじゃねえ。

>>68
どこ置けばいいかわからない?F#でだけ?どの言語でも同じじゃまいか。
0070デフォルトの名無しさん
垢版 |
2011/06/01(水) 20:37:59.90
あと自動整形できないからっての、よくわからん。
整形されたコードしかコンパイル通らんのだから
そもそも整形する必要ないじゃんか。



まあ俺もオフサイドルール嫌いだけど。
0072デフォルトの名無しさん
垢版 |
2011/06/02(木) 15:49:55.04
あれーC#から使う時に、F#のunionの各サブクラスへの変換とかなんかメソッドなかったっけ
FSharpUnion<Employee>.get_Manager的な。
isManagerでしてから普通にキャストすればよかったんだっけ?
0074デフォルトの名無しさん
垢版 |
2011/06/02(木) 20:42:24.42
FSIにnamespaceとかopenて流し込めないんだね・・・

デバッグの途中で
add 1 2
とか打てたらいいんだけど・・・
F#ってデバッグが難しいね;;

0075デフォルトの名無しさん
垢版 |
2011/06/02(木) 21:59:27.33
>>72
サブクラスとか、キャストとか、なんか根本的に間違ってないか。

>>74
openは流せる。まさかopen Listがエラーだからとか言わないよね?
0076デフォルトの名無しさん
垢版 |
2011/06/02(木) 22:05:03.83
>>75
あぁ、ごめん。書き方が悪かった。

自分で定義したnamespaceを
openすることができないってことでした。すいません。
0077デフォルトの名無しさん
垢版 |
2011/06/02(木) 22:44:29.66
>75
いやC#からだとUnionそういう風にしか扱えなくなかったっけ?
そのUnionのインスタンスでIsManagerとかよべるけど。ManagerであるUnion値をManagerとして扱いたいときにどうしたらいいかって話。
もっとまともな方法あったっけ?
0078デフォルトの名無しさん
垢版 |
2011/06/03(金) 00:30:20.24
>>77
type Employee = ... | Manager of Hoge の場合↓

var emp = Employee.NewManager(hoge);

if (emp.IsManager) {
    var mngr = ((Employee.Manager)emp).Item;
    // dosomething
}

だからDesign Guidelinesにはまんま使うなと書いてある。
0081デフォルトの名無しさん
垢版 |
2011/06/03(金) 09:50:11.17
>>80
協力な型推論、nullがない、パターンマッチ、関数内関数ができる、対話環境、並列計算に強い
とかじゃね。
0083デフォルトの名無しさん
垢版 |
2011/06/03(金) 10:13:46.63
>78
あーやっぱりそんな感じかー
>79
自分も最初は悩んでたけど、最近はなんも困ってないな。なんでだろ。途中でうまく止めて値見るのとWriteLineで出しとくのとヘルパーとか使ってFSharpFunc楽に実行できるようにしたところか?
そもそもDebugが必要になる羽目になることが少なくなったというのもある気がするが。
>80
Debugしながらでもソースがいじれるところ。
0085デフォルトの名無しさん
垢版 |
2011/06/03(金) 11:02:45.96
>>82
実行時エラーがない方が運用上大いなるなメリットがあるのは当然だろJK
quick sortの発明者アントニーホーアはnullは10億ドルの過ちであると言っている。
ttp://news.livedoor.com/article/detail/4047613/
0086デフォルトの名無しさん
垢版 |
2011/06/03(金) 15:53:21.29
まあ、どんなの場面でもnull不要とはいわないけども、
Anders Hejlsbergも「nullableの概念は参照型/値型の概念とは独立させておくべきだった」っていってるしね。
非nullable参照型は欲しい。
0087デフォルトの名無しさん
垢版 |
2011/06/03(金) 18:18:05.09
>>86
関数型言語にはnullは必要ないよ。関数型プログラマはnull参照エラーみたいなアホみたいな実行時エラーとは
無縁の世界でプログラムしているよ。
0088デフォルトの名無しさん
垢版 |
2011/06/05(日) 00:00:41.87
>>83
FSharpFuncってなんですか?

数値計算のプログラムを作ってる時は、
デバッグは絶対必要なんですよね・・・

関数の形で定義してると、途中で止めても
中の数値が見れないんですよねorz

let x=f a
とかしちゃってる時に、
f 1
の値を見る方法がないと、数値計算のプログラムのデバッグは
無理かなーと。

現状のF#を数値計算に使うと死ぬかも・・・・
0089デフォルトの名無しさん
垢版 |
2011/06/05(日) 06:40:44.23
伝統のprintfデバッグじゃダメ?
let dbg x = printfn "*debug:%A" x; x;;

こんな感じで使う。
[1..10] |> List.map ((+) 1) |> dbg |> List.map(fun x -> dbg(float x / 2.0));;

0090デフォルトの名無しさん
垢版 |
2011/06/05(日) 12:12:50.78
>>89
%Aでリスト(行列)を全表示できるのかな?
そうなら、そういう関数作っておけば、確かに楽そうだね。
DOS窓かよって不満はあるけどw
それやってみるよ。ありがと。

また、ただ、いろいろ細かい状態が知りたかったりするから
デバッグ中に値が知りたいというニーズは多いし、
あとはけっこう量が多いんだよね・・・うーん。
0092デフォルトの名無しさん
垢版 |
2011/06/05(日) 12:25:05.75
> FSharpFuncってなんですか?
関数の型。クロージャ作るとそゆ型が付く。
まーF#の中にいる限りは特に意識する必要ないが。
C#と連携したいなら覚えておくといいかも。
0093デフォルトの名無しさん
垢版 |
2011/06/07(火) 12:29:28.85
F#のイディオム的なテクニックを教えてほしいな。
例えば、クロージャーとか簡単なもの。

使い始めたんだけど、上手く使えてるか自信がない。
F#ならではの書き方あったら教えてください。
0097デフォルトの名無しさん
垢版 |
2011/06/08(水) 10:21:18.89
>>93
非関数型プログラマ: forやwhileループを使う
関数型入門者: 再起を使う
中級者: map, foldをなるべく使う

これが割と参考になるかも。
0099デフォルトの名無しさん
垢版 |
2011/06/08(水) 10:47:37.21
文字列のlistがあって、その文字列を表示できる矩形を重ならないように上から並べたrectと文字列のタプルのリスト返せっつったら、foldで次のトップと結果のlistを状態にするような感じでよろし?
こういうのにfold使うのなんか微妙に違和感あるんだけれどこんなもんかね@関数型初心者。
0100デフォルトの名無しさん
垢版 |
2011/06/08(水) 11:11:11.30
>>99 こんな感じ?
let union rect1 rect2 = new Rect(rect1.x, rect1.y, max rect1.width rect2.width, rect1.height+rect2.height) in
ss
|> map (fun s -> getRectOf(s))
|> fold union empty_rect
0103デフォルトの名無しさん
垢版 |
2011/06/08(水) 22:28:05.14
F#で文字の連結ってどうするんですか?
+でできるのはわかるんですが、これだと遅いですよね?
0106デフォルトの名無しさん
垢版 |
2011/06/08(水) 23:17:37.07
末尾最適化になってるはずなんだがstackOverFlowになるってことはなってないんだろうなぁ・・・何か確認する方法あったっけ。
そもそも要素一つずつ減らしてるから無限ループになるはずないのに4千件ぐらいでStackOverFlowになるってなんか変だ。
Console.WriteLineで出力しても途中まで減ってってるのに突然何も出さなくなって5秒ぐらいしてからStackOverFlowが出てもうわけわかめ(´;ω;`)ブワッ
0109106
垢版 |
2011/06/09(木) 08:39:36.40
あれーインタラクティブに流し込んだらもっとたくさん流し込んでもさっくり動くよ…
そもそもデバッガーだと末尾最適化しないとかあったっけ?いやそんなことないよね…

問題だけどインタラクティブでさっくり動いたコードとりあえずまるっと載せてみる

let inRange from t v=from<=v&&v<=t

//rangeによってポイントをまとめる。
//現在のrange=from〜tに合うならptListに追加。
//合わないなら今までのptListを一組としてptListListに追加し、新しいポイントとしてptListに追加。
//合うrangeがなくなるか、iListが空になったら抜ける。
let rec toPtrListList (ptList,ptListList,((from,t)::rangeList)) (i::iList) indToInter indToVal=
// Console.WriteLine("toPtrLL----{0}",System.Environment.TickCount)
// Console.WriteLine ("toPtrLL iList={0},rangeL={1}",List.length iList,rangeList.Length)
let inter=indToInter i
let toPt()=inter,indToVal i
//System.Drawing.PointF(float32<|trans.XInterToUI inter,toUIY series.[i]|>float32)
//helper-----
//合うrangeを探してそれ以降を返す。
let rec findFitRange rangeList inter=
// Console.WriteLine("findFitR {0}",System.Environment.TickCount)
match rangeList with
|[]->None
|(from,t)::tail->
if inRange from t inter then Some rangeList
else findFitRange tail inter
//iListが空ならその時点のを結果とする。有るなら続き。
0110106
垢版 |
2011/06/09(木) 08:40:17.92
//続き
let contOrBreak (ptList,ptListList,rangeList) iList=
// Console.WriteLine ("contOrBreak iList={0}",List.length iList)
match iList with
|[]->[],ptList::ptListList,rangeList
|_->toPtrListList (ptList,ptListList,rangeList) iList indToInter indToVal
// Console.WriteLine("toPtrLL---before helper {0}",System.Environment.TickCount)
//-----helper
if inRange from t inter then
//現在のrangeに合う。
contOrBreak (toPt()::ptList,ptListList,((from,t)::rangeList)) iList
else
//rangeに合わない
if t<inter then
//現在のrangeよりinterが先。
match findFitRange rangeList inter with
|Some (rangeList)->
//fitするものがあったのですすめる。
contOrBreak ([toPt()],ptList::ptListList,rangeList) iList
//なかったので現在のものを結果とする。
|_->[0,0],ptList::ptListList,(from,t)::rangeList
//inter<fromなので今のindを捨てる。
else
// Console.WriteLine ("hogehoge iList={0}",iList.Length)
contOrBreak (ptList,ptListList,((from,t)::rangeList)) iList

let test=
toPtrListList ([],[],[0,10000;10001,20000;20001,30000]) ([0..50000]@[0..100]) id (fun i->i+100000)

0111106
垢版 |
2011/06/09(木) 08:43:47.05
インデントが(;´Д`)

let inRange from t v=from<=v&&v<=t

//rangeによってポイントをまとめる。
//現在のrange=from〜tに合うならptListに追加。
//合わないなら今までのptListを一組としてptListListに追加し、新しいポイントとしてptListに追加。
//合うrangeがなくなるか、iListが空になったら抜ける。
let rec toPtrListList (ptList,ptListList,((from,t)::rangeList)) (i::iList) indToInter indToVal=
// Console.WriteLine("toPtrLL----{0}",System.Environment.TickCount)
// Console.WriteLine ("toPtrLL iList={0},rangeL={1}",List.length iList,rangeList.Length)
let inter=indToInter i
let toPt()=inter,indToVal i
//System.Drawing.PointF(float32<|trans.XInterToUI inter,toUIY series.[i]|>float32)
//helper-----
//合うrangeを探してそれ以降を返す。
let rec findFitRange rangeList inter=
// Console.WriteLine("findFitR {0}",System.Environment.TickCount)
match rangeList with
|[]->None
|(from,t)::tail->
if inRange from t inter then Some rangeList
else findFitRange tail inter
//iListが空ならその時点のを結果とする。有るなら続き。
0112106
垢版 |
2011/06/09(木) 08:44:27.70
スペースを入れてもダメか。俺\(^o^)/オワタ
0113デフォルトの名無しさん
垢版 |
2011/06/09(木) 09:16:04.56
htmlレンダリングの問題だけで、スレに書き込まれてるソース的には空白やタブ残ってたと思った。

リンク貼る形式なら、gistや>11の使うといいと思う
0114デフォルトの名無しさん
垢版 |
2011/06/09(木) 09:46:14.43
>>113
106ではないが、インデントを推測して貼ってみた。F#の構文がわからないので間違ってるかも
ttp://ideone.com/JW8dl
0115デフォルトの名無しさん
垢版 |
2011/06/09(木) 10:06:12.85
>>106
よくわからんがfindFitRangeは再帰しなくても高階関数使った方がシンプル
let inRange v (from, t) = from<=v&&v<=t
let isFit v ranges = ranges.exists(isRange v)
let findFitRange ranges inter =
if (isFit inter ranges) then Some ranges
else None
0117106
垢版 |
2011/06/09(木) 11:37:16.53
>113-116
オマイラあり\(^o^)/

>115
いや、リストをなめていって見つかったらそれと、それ以降のやつをタプルで返してるのでそのやり方だとミリ。
なんかうまい高階関数あるのかもしれんが。
0118デフォルトの名無しさん
垢版 |
2011/06/09(木) 11:51:17.37
>>117
List.partition : ('T -> bool) -> 'T list -> 'T list * 'T list
ttp://msdn.microsoft.com/ja-jp/library/ee353782.aspx
が近いけどちょっと違うか。
こういう場合は素直に再帰をした方がいいのかな?
0119デフォルトの名無しさん
垢版 |
2011/06/09(木) 12:06:19.24
>118
それ条件で振り分けるやつだからちょと違うと思われ

というか自己解決したかも。
プロジェクトの設定でビルドタブに"tail呼び出しの生成"って項目あってそれオンにしたらサックリ動いた。
ってもこれ付けたらデバッグとかしにくくなんのかな。
お騒がせしますた。
0120デフォルトの名無しさん
垢版 |
2011/06/09(木) 12:12:10.32
※補足:
上の何も出さなくなって5秒ぐらいしてからStackOverFlowってのは例外になったのでVisualStudioが表示用とかに色々頑張ってる状態なんだろうね。
0121デフォルトの名無しさん
垢版 |
2011/06/09(木) 12:34:18.75
末尾呼び出しを最適化すると、関数のトレースが出来なくなる。
だから、デバッグするときは、最適化切ったりするね。
0122デフォルトの名無しさん
垢版 |
2011/06/11(土) 08:45:12.01
末尾最適化=スタックに積まないだからそりゃね。
でも再帰呼び出し時のスタック トレースが必要なことってある?
printf デバッグでいいんじゃねぇかと思うんだけど。
0124デフォルトの名無しさん
垢版 |
2011/06/11(土) 14:00:10.41
いやいやwスタックトレースは必要だと思ってるよw
どこからどう呼び出されてきた関数かはデバッグに不可欠
だけど、再帰の分に関しては必要ないんじゃね?って。
0125デフォルトの名無しさん
垢版 |
2011/06/11(土) 14:19:14.54
んーまぁ再帰でもなんでその条件分岐になったのか流れ見たいときはある希ガスんなぁ
printfでもいいけど。printfでいいか。
0126デフォルトの名無しさん
垢版 |
2011/06/11(土) 22:52:39.73
俺が想定してたのは再帰するしないで2分岐するだけの単純な再帰なんだけど
もしかするともっと複雑な再帰とかだとスタック見たいこともあるかも。
というかまあ見れる見れないだったら見れる方がありがたいのは確か。

ただ、再帰って、割とこうガチガチにロジカルに組まないとコンパイル通らない
ような気がしてて、スタック追っかけてまでデバッグする必要性あるかなあと
思ったりしたんだわ。
0127デフォルトの名無しさん
垢版 |
2011/06/15(水) 09:53:18.75
FSUnitとVisualStudioのテストおのおのどんなメリット・デメリットあるのかすら。
C#使ってた時はVSのつと使ってたけどF#だと使いにくい?
0131デフォルトの名無しさん
垢版 |
2011/06/16(木) 12:49:59.57
Alt+EnterでInteractiveに流し込もうとするとエラー音してできない時があるんだけど、そういう現象出てる人います?
ウィンドウ→新規で別ウィンドウ出すとそのソースからでもできるんだけどいまいち発生する条件がわからん。
0135デフォルトの名無しさん
垢版 |
2011/06/27(月) 02:39:51.37
関数内で途中でreturn みたいに値を返したり
for内でbreakしたりしたいんですがどうやればよいですか?
0136デフォルトの名無しさん
垢版 |
2011/06/29(水) 11:16:04.97
>>135
自分の場合はtryFindかtryPickかな。
どうしても途中で抜けたいなら、例外出して抜けるしかない。

自分もC++のコードをF#にしてみようと思ったときそこで悩みました。
結局、F#の繰り返しのfor文は全然使わないでList.mapかList.iterで処理するのがいいと思った。
0137デフォルトの名無しさん
垢版 |
2011/07/01(金) 11:25:54.20
>>135
>関数内で途中でreturn みたいに値を返したり
条件で返す値を変える

>for内でbreakしたりしたいんですがどうやればよいですか?
手続き型のfor/whileは全て再帰だと思っていい
0139135
垢版 |
2011/07/02(土) 01:56:39.99
>>136-138

レスありがとうございます.
let loopですっきりとした記述ができました.
0140天使 ◆uL5esZLBSE
垢版 |
2011/07/05(火) 06:48:35.87
2011年、Ruby,Perl,PHP,Pythonって並べたときにさ
ここで、Ruby以外を選ぶ奴ってマジでなんなんだろうな


ゴミだし
0141天使 ◆uL5esZLBSE
垢版 |
2011/07/05(火) 13:47:18.60
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど

もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ


ゴミの分際でw
0144デフォルトの名無しさん
垢版 |
2011/07/17(日) 00:05:23.57
誰かseqのBuilderを実装しているソースどれかわかる人います?
2.0のソースはあるんだけど検索してもわからんです…
0150デフォルトの名無しさん
垢版 |
2011/08/20(土) 10:46:16.38
>>149
なってないなぁ…と思う。
そんなもん見るよりも、ちゃんと時間取ってExpert F# 2.0読む方がずっといいよ。
0153149
垢版 |
2011/08/21(日) 08:02:31.09
>>152
突っ込むために見直してみたら、そんなに突っ込み所は無かったかも。
>>149で頭ごなしに否定するのはまずかった。反省してる。

初見ではもっと気になる所があった気がしたけど、今見て思うのは以下。

・P35-P43 if式を(.NET中では)F#に特徴的、みたく書いてるけど、実はVB.NETにもif式はあるのです…
・P85 高性能、ではなくて、高機能、では?
・タプルを使ったPythonでいうアンパック代入相当の構文を備えていて、
 多値関数の戻り値が(x,y) = funcHoge(a,b)みたいに自然に書ける説明が抜けてる。
・リスト操作用の組み込み高階関数の説明が無い。

とか。重箱の隅かもしれんけど、気になるんよ。
0154関数型入門中
垢版 |
2011/08/21(日) 19:29:53.73
質問させてください。

ここ数ヶ月、関数型言語をいろいろ見ています。(Scala,Haskellなど)

実践F#という本を読んでいます。

ちょっとこういう場合どうすればいいか、わからないことがあり質問させてください。

あるレコードが定義されている場合、
そのレコードに対して適用できる一連の関数を知る方法ってありますか?

実践F#には、同じ名前空間に、レコードと同じ名前のモジュールを定義して、
そこに関連する関数を書くとよい、とされていますが、
実際そうされているものでしょうか。

一つに、Haskellの型クラスのような仕組みがあれば、見通しがよくなると思うんですが
そういう仕組みはないんですよね? (Scalaにもなかった。。)

なにか、自分で設計する場合、他人が見てもわかりやすい方法などあれば教えてください。
よろしくお願いします。
0156デフォルトの名無しさん
垢版 |
2011/08/21(日) 21:20:09.09
>>154
ある型に対する一連の関数を知る方法は、簡単にはないですね。
AppDomainをリフレクションで総舐めとかすればそりゃ別ですが。

型と同名のモジュールを作ってーというお作法は、まあ、ふつうはそうするかなあと。
もちろん、ふつうじゃない場合もあるわけだけど。

Haskell型クラスが美人なのはわかりますが、すでにインターフェイスで筋通してる
.NET(あるいはJVM)においてそれを求めるのは、ちょっと難しいかなあという感想。

>>155
関数型でなくOOPで、と。ええ、おっしゃる意味は解りますが、といって、たとえば
Fooオブジェクトを必要とする振る舞いがすべてFooのメソッドとして定義されるとは
限らないわけで。BarクラスのメソッドがFooを引数に取ることだってあるでしょう。

このあたり、私は、F#においてのみ特別不便だ、とは感じません。
0157b
垢版 |
2011/08/21(日) 22:37:39.67
> 149
書いた人です。指摘してくれてありがとうございます!

>・P35-P43 if式を(.NET中では)F#に特徴的、みたく書いてるけど、実はVB.NETにもif式はあるのです…
確かに、誤解を招く書き方でした・・・
一応、VBのIf式は知っていたのですが、あくまでここでは
「C#にもVBにもif文があるけど、F#にはない」
ということが言いたかったのです。

>・P85 高性能、ではなくて、高機能、では?
うわ、全く気付いていませんでした・・・高性能はおかしいですね。

>・タプルを使ったPythonでいうアンパック代入相当の構文を備えていて、
 多値関数の戻り値が(x,y) = funcHoge(a,b)みたいに自然に書ける説明が抜けてる。
これは微妙なところで、タプルのみに限った機能ではないので省きました。
例えば、
type t = { Name: string; Age: int}
という型があったとして、t型の値xに対して
let { Name = n } x
ということも可能ですし、そもそもローカル変数に限った話ではなく、
let name { Name = n } = n
のように引数に対してのマッチも可能です。
let x, y = y, x的なものを入れるかどうかは迷ったのですが、結局入れませんでした。

>・リスト操作用の組み込み高階関数の説明が無い。
これは、この時のターゲットを考えて意図的に入れませんでした。
確かに便利な高階関数は色々と用意されていますが、それを列挙する発表ってつまらなくないかなぁ、と思ったので。
ただ、LINQ to Objectには一対一で対応するものが無いような高階関数の紹介はやってもよかったかもしれません。
0158b
垢版 |
2011/08/21(日) 22:39:15.22
あ、let { Name = n } = xです。
0160デフォルトの名無しさん
垢版 |
2011/09/07(水) 22:14:16.34
F#のすごい日本人おしえれ
0161デフォルトの名無しさん
垢版 |
2011/09/07(水) 22:14:49.33
いますぐフォローすべきF#の人的なやつ
0163デフォルトの名無しさん
垢版 |
2011/09/07(水) 22:45:31.06
いないんだな、それが
というとアレだが、F# に特化してる人っているかね?
なにかしらほかの言語も使いつつ F# も嗜む的な
リベラルというか
0165デフォルトの名無しさん
垢版 |
2011/09/08(木) 05:49:53.02
完全にF#で仕事、というのが日本にはない感じなので、そういう点で、人が見えないよね。
小物やらバッチに使うやらぐらいなら、そりゃあるだろうけれど。
かといってF#で何かOSSで作って公開、などという人もいないようだし。
0168デフォルトの名無しさん
垢版 |
2011/09/08(木) 15:48:51.11
活用例とかになれば
最終的には.netのグルー言語以外の何でもねえんだし
scalaにしろ、元にくらべての使い勝手の話になるんだから面白い話じゃない
.net嫌いな人ってもういないの?

>>160>>161
それなら各言語のすごい人全部まとめれ
0170デフォルトの名無しさん
垢版 |
2011/09/09(金) 19:54:27.44
会社にFランがいたけどひどかった。
#なんか付けたところで同じようなもんだろ。
0171デフォルトの名無しさん
垢版 |
2011/09/09(金) 20:01:08.56
Javaの変態の人たちはScalaやってるのに、
なんてC#の変態の人たちはF#やんないの?
0172デフォルトの名無しさん
垢版 |
2011/09/09(金) 20:21:30.63
Javaは使いづらくてやっとレンガ、C#はそこそこ間に合ってしまうというのがあるんじゃ。
F#のほうが使いやすいけどねー
0173デフォルトの名無しさん
垢版 |
2011/09/09(金) 20:32:09.20
Javaと違ってC#は糞言語じゃないから。

C#にはラムダ式、まともなジェネリック、LINQがあるし、
次のバージョンではasync,awaitも入るのでF#のメリットが相対的に少ない。

また、F#はC#と比べてIDEの支援が弱いのというデメリットがあるので
(特に WindowsForms、WPF、ASP.NET MVCなど主要ライブラリ関連)
F#のメリットとデメリットを天秤にかけた結果、C#でいいやって事になってしまう。
0175デフォルトの名無しさん
垢版 |
2011/09/09(金) 20:40:54.41
C#を使ってると「パターンマッチ使いてぇ」
って場面は割とよくあるんだけど、
それだけの為にユーザーの環境にF#ランタイムを入れさせるのは憚られたので
結局使ってない。

.NET FrameworkにF#ランタイムが含まれてたら使ってたかもな。
0176デフォルトの名無しさん
垢版 |
2011/09/09(金) 20:44:40.99
俺的にはパターンマッチ、再起、部分適用、ユニットオブメイジャー、モナド含め、コードが書きやすいから。
0177デフォルトの名無しさん
垢版 |
2011/09/09(金) 21:42:20.97
>>171
インテリセンスさいこーってことでしょ
まー.NET的にC#が勝ち馬であるとに異論はない
いまんとこ

>>173
Javaも別に糞じゃないと思うが
古臭いならわかる
0179sage
垢版 |
2011/09/09(金) 23:36:12.15
C#でLINQと拡張メソッドとラムダ使ってドヤ顔カッコワルイwwww
0188デフォルトの名無しさん
垢版 |
2011/09/15(木) 23:23:01.45
F#3.0
http://blogs.msdn.com/b/fsharpteam/archive/2011/09/14/f-3-0-developer-preview-now-available.aspx
バージョン1分差があるのか分からんけど3.0
win8+vs2011expと違って、msdnのサブスクリプションが必要?

追加点
F# Information Rich Programming
- F# LINQ Queries
- F# Type Provider mechanism
- a set of built-in type providers for enterprise and web data standard
IDEサポート増えるみたい。
0190デフォルトの名無しさん
垢版 |
2011/09/16(金) 11:56:24.12
従来交わることのなかった OCaml 使いと C# 使いがそれぞれ別の切り口で文句を言いに集うスレはここですか?
0191デフォルトの名無しさん
垢版 |
2011/09/16(金) 13:05:24.76
>>190
仕事で両方使ってる人は、期待することはあっても文句はいわんだろ。

P層C#、F層F#でそれなりの規模のもの作ってみると、結構使える手ごたえはある。

普通にF#で機能を一つ作った後、その中で理論的に並列動作できそうなところがあれば、
それをマルチスレッド化するのに数分の作業で済むことも多いし、それがいつも安定して動く
という経験を重ねると、これからの時代C#だけじゃだめかなという気にもなってくる。

まだ立ち上がって数年の言語だし、捨てられないでちゃんとバージョンアップしてくれてるから、
まだまだこれからと見るべきでしょう。
0193デフォルトの名無しさん
垢版 |
2011/09/16(金) 17:10:27.45
型を定義することなくデータソースから何らかの方法でメタデータを取得し静的な型として扱えるようにするものって感じかの。
0194デフォルトの名無しさん
垢版 |
2011/09/16(金) 17:31:00.24
>>193
ありがとうございます
型定義を手で書かなくても済むようにするための
メタプログラミングの仕組み、みたいな感じでしょうか。。。
0196デフォルトの名無しさん
垢版 |
2011/09/17(土) 04:22:38.42
Visual Studio 11 Developer Previewは、日本語版もあって2012年6月30日まで使えるのか。
http://msdn.microsoft.com/en-us/aa570309#five

> Metroスタイルのアプリケーションを開発するには Windows Developer Preview with developer tools English, 64-bit上に
> Visual Studio 11 Developer Previewがインストールされている必要があります。
開発ツール付きWin8上にインストールすればMetroスタイルアプリ開発にF#も使えそう。
0197775
垢版 |
2011/09/17(土) 09:34:30.73
Twitterで上がった話題(iOSでF#)で、F#のSymeがMonoのIcazaに、
build会場周辺でちょっと合って話さんかとかやってる。
0200デフォルトの名無しさん
垢版 |
2011/09/18(日) 14:25:45.62
C++ の template みたいなマクロの延長のものじゃなくて、
ビルドプロセスをフックして型を作ってるんじゃないかな。
そっちも .NET (F# 含む)で書ける。
0201デフォルトの名無しさん
垢版 |
2011/09/20(火) 10:58:50.53
VS11 DP(ja)を、Win7(ja)とWin8 PR(en)にインストールしたが、VSからのF#(3.0) Interactiveが
どちらも日本語で表示しようとして文字化けしてる。(その画面だけ多国語対応してない?)

「C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\Fsi.exe」を直接起動すると
win7(ja)で日本語、Win8(en)英語で正常に表示された。
0204デフォルトの名無しさん
垢版 |
2011/09/27(火) 04:47:47.07
ScalaとF#と両方勉強しているのですが、
判別供用体(代数的データ型)の、パターンマッチについて教えてください。

Scalaでは、case class で定義すると、内部的には、class 定義に、applyやunapplyメソッドを持たせて、オブジェクトに対してパターンマッチを行っているようです。

F#の場合は、どんな感じでしょうか? F#の判別供用体も、実際はクラスから作られたオブジェクトなんですよね?? (.Net言語だから、そう考えたんですが。。)
そうすると、Scalaのapplyやunapplyに対応するメソッドを持ったクラスなんでしょうか?

教えてください、よろしくお願いします。
0205デフォルトの名無しさん
垢版 |
2011/09/27(火) 05:03:40.46
Scalaのapply,unapplyはよくしらんのだけれど、F#では各共用体は派生クラスとして実装される。
各々Tagを持ってるのでパターンマッチはそのTagを見てると思う。
0206デフォルトの名無しさん
垢版 |
2011/09/27(火) 05:21:39.52
夜遅くに(朝早くに)ありがとうございます。
なるほどクラスとして実装されているんですね。
type A =
| B
| C
| D

だと、派生クラスB、C、Dが定義されていて
たぶん、スーパークラスとして、クラスA とか定義されているんでしょうか。(クラスAでなくてもよいとは思いますが)

もし、クラスAだとすると、このクラスAにもTagを定義するように定義されていると思いますが、
クラスAは、.Netというか、F#のクラス的には、もともと何クラスなんでしょうか?


ちょっと、質問がわかりにくくてすみませんが
たとえば

let hoge:A = B
とか、書いた場合に、
変数 hoge の束縛している、クラスが何かって、得る関数ありますか? という質問がしたいです。
(判別供用体のBを返すのでなく、元のクラスが何か? を得る関数という意味です。)
0207デフォルトの名無しさん
垢版 |
2011/09/27(火) 13:01:19.65
F#の中では知らん。
Reflection使ってbaseクラスたどってみては。
C#から見ると多分Aとして見れると思う。
0210206
垢版 |
2011/09/28(水) 14:57:18.94
みなさんありがとうございます。
自分なりの理解はこんな感じになりました (↓素人理解です)

F#のレベルでは、
判別共用体と、クラス・オブジェクト は全く別のもの。

CLRレベル(.Netレベル)ではたぶん、同じような仕組みで実装されている。

一方、
Scalaは、いわゆる判別共用体は、クラスの拡張で実現されているように思います。
(applyやunapplyというものを定義したもの)

※ 素人の理解ですが。
0211デフォルトの名無しさん
垢版 |
2011/09/28(水) 15:07:34.34
>>210
ProgramingF#のC#Interropの章にF#で定義したunionがC#だとどういうクラスとして定義されるか出てるから見てみるがヨロシ。
webでもどっか転がってそうだけど。
0212デフォルトの名無しさん
垢版 |
2011/09/30(金) 22:37:54.99
実践F# を読んでいると、
OOPの章のP264に、
本書では、詳細に踏み込みませんが、レコードや判別共用体の定義とは、F#コンパイラが構造的な性質
を持つように特別なパターンを適用したクラスとして生成するものです。本節では、特別なパターンが施されな
い、生身のクラスを定義する方法を示します(リスト8‐5)。

と書いてあって、F#ではクラスの特別なものが、判別共用体や、レコードのようなきがする。
0213デフォルトの名無しさん
垢版 |
2011/10/01(土) 06:37:51.43
特別なクラスというと語弊がある。
MSIL上は継承関係とか種類を表すタグとかが一定ルールに従っているただのクラスであり、其れが自動生成されているだけ。
0218デフォルトの名無しさん
垢版 |
2011/10/23(日) 03:15:14.94
しかしそれでもScalaより上って・・・・・目くそ鼻くそとはこのことか。

はやくJavaの時代終わらないかなぁ・・・・
0219デフォルトの名無しさん
垢版 |
2011/10/23(日) 12:42:45.14
>>218
scalaは関数脳に慣れてない人からは関数型言語部分に苦しんで、haskellやOCamlで関数脳になった人からは関数型言語としてはキモイから。。。

F#Express出たらかなり差が付くだろうね

haskellもGUIに特化した専門書とか出ないと伸びないんだろうな。。。
0235デフォルトの名無しさん
垢版 |
2011/11/11(金) 13:59:41.00
https://github.com/fsharp
githubに、fsharpオープンソースコミュニティーというのがあるのか。
donsymeがいると公式感があるな。
mono開発者のicazaも入ってる。
F#はClojureCLRと違って余裕あるからか、monoとの互換性も重視してたの思い出した。
0237デフォルトの名無しさん
垢版 |
2011/11/11(金) 14:18:47.50
作ってるのはSocket IOだった。
Fracture/Pipelet/Frackって分かれてる。
future-ioはSSDだった・・・orz
0241デフォルトの名無しさん
垢版 |
2011/11/14(月) 02:54:08.28
F#はType Classの要望が強かったけど
.netの型システムとの互換性を重視して入れなかったとどっかで言ってたから
H#はないんじゃないの?

ちなみに"Visual Haskell"は既にあるよ
0242デフォルトの名無しさん
垢版 |
2011/11/14(月) 06:45:33.31
>>241
>ちなみに"Visual Haskell"は既にあるよ

そうだった。VS2010に対応したかな?少しは安定したかな?
全然使えなさそうですっかり忘れてた

>F#はType Classの要望が強かったけど
>.netの型システムとの互換性を重視して入れなかったとどっかで言ってたから

・・・orz
0244デフォルトの名無しさん
垢版 |
2011/11/14(月) 13:06:42.36
>>243
多層的で等価比較、順序比較出来るリストを簡単に定義出来たりする

data List a = Null | List (List a) deriving (Eq,Ord,Show,Read)

使用例

List 1 (List 2 (List 3 Null))

head (List x _) = x

tail (List _ xs) = xs
0245デフォルトの名無しさん
垢版 |
2011/11/14(月) 15:21:15.27
Eq,Ordが型クラスで、List aがインスタンスだから、例としてはこっちが適切か

large xs ys | xs < ys = (ys,xs)
large xs ys = (xs,ys)
0246デフォルトの名無しさん
垢版 |
2011/11/14(月) 19:28:12.45
C# のプロジェクト で F# のファイルのインポートがどうしても
できないんですがどっかにまとまってないでしょうか?
あとC#プログラム中でfsファイルの実行は不可能なのでしょうか?
C#, F# のプログラムがそれぞれ下のようだったとして

main(){
exec(1.fs); //this is c# code
Console.WriteLine("aa");
}


########
let a = 3 // this is F# code
printfn "hello"
#########


実行して
hello
aa

となるような
0249デフォルトの名無しさん
垢版 |
2011/11/17(木) 21:05:56.68
>>246
ねーよ
0251デフォルトの名無しさん
垢版 |
2011/11/18(金) 21:39:55.75
え?
0252デフォルトの名無しさん
垢版 |
2011/11/19(土) 01:58:24.47
いや、この発想はまだまだ用語や概念判ってないのかなと思って
exec(1.fs); //this is c# code
0255デフォルトの名無しさん
垢版 |
2011/11/24(木) 21:32:53.28
XML に Serialize したいんだけど、mutable にするしか方法ない?

ttp://cs.hubfs.net/topic/None/57413
↑は見たんだが、02-SerializeXml.zip はダウンロードできないみたい
0258デフォルトの名無しさん
垢版 |
2012/02/18(土) 20:32:01.56
580 名前: デフォルトの名無しさん Mail: sage 投稿日: 2012/02/16(木) 05:11:31.94
F#を始めたのだが、モナドで行き詰まっている。
F#の本にはモナドのことが書いていない。
で、ネットでモナドのことを収集すると、ハスケルのがほとんど。
F#での説明もあるが、なんか解りづらい。

で、モナドって何ですか?
関数型プログラミングをやるにはモナドが必須ですか?

どなたか教えてください _o_

613 名前: デフォルトの名無しさん Mail: sage 投稿日: 2012/02/17(金) 09:25:13.67
>>580
ここは読んだか?
http://www4.atwiki.jp/fsharpmaster/m/pages/13.html

>StatefulFuncはなぜ動くのか?
>  StatefulFuncを含むワークフロー(モナドとも)を理解する道筋はいくつかあ
> ると思いますが、まず最初に「操作的」に手を動かしてプログラムの意味を解き
> ほぐしていくアプローチを取ってみようと思います。
0262デフォルトの名無しさん
垢版 |
2012/03/09(金) 00:57:53.79
もまいらもっとF#書けや
0264デフォルトの名無しさん
垢版 |
2012/03/10(土) 17:23:56.54
本質的には別物
0265デフォルトの名無しさん
垢版 |
2012/03/16(金) 20:14:45.72
F#はどこの世界が流行してるの
0269デフォルトの名無しさん
垢版 |
2012/03/20(火) 07:16:12.67
ウィキ作った。
書くの手伝ってくれ。
http://goo.gl/9UG1y
0271デフォルトの名無しさん
垢版 |
2012/03/20(火) 23:06:53.00
F#/monoを扱うなら解るようにした方がよいかも?
そして、MonoとF#のインストールの関係で、Linux or OSX, FreeBSDの順で情報がない気がする。
使い始められればそんなに変わんないと思うけど。
0275デフォルトの名無しさん
垢版 |
2012/03/28(水) 22:12:22.72
LISP Haskell Scalaなんかは変態ばかりでも伸びてるんで
むしろ変態へのアピールが足りてないが正しい

関数型がいいといっても.netならC#、
いざ関数型の勉強だ、ってF#にするくらいなら他の言語に目移りするわけだ
もはや言語ヲタを引きつける言語としての魅力、が欠けてるのははっきりしたと思う
それでもF#好きなのは変態のさらに変態?いやいやただのマイノリティ
0277営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/03/29(木) 00:26:09.28
公式フォーラムも、あんまり使われてないね。
http://social.msdn.microsoft.com/Forums/en-US/fsharpgeneralja/threads?sort=lastpostdesc
ただ、かの名古屋の地ではocaml, F#, scalaを受託環境にあわせて使い分けてると聞く。
いまだとblogやtwitterなら答え返って来ることもあるよ。

英語が苦にならないなら活発なフォーラムがあるので無問題。
http://social.msdn.microsoft.com/Forums/en-US/fsharpgeneral/threads?sort=lastpostdesc
http://stackoverflow.com/questions/tagged/f%23
( http://cs.hubfs.net/topic-tag/0/1/f~23 )
0280営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/03/29(木) 15:21:25.50
とりあえずF#じゃなくてC#を使わないといけない理由が殆ど無いのでF#ばかり使ってます(´・ω・`)
デザイナー等C#必須であれば、F#のモジュールと混在って感じですね。
PortableLibraryに期待(´∀`∩)↑age↑
0281営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/03/30(金) 00:48:03.82
>>273
Haskellスレも概ねそうなんだが、簡単に関数を自作出来ちゃうから、「こう言う事したいんだけど、どう書けば良い?」みたいな質問はほとんど無い
自分も、Haskellスレで質問したのは練習問題でリスト内包表記でこう言う関数を書けって問題の時だけだったし
変に制限付くとどう書けばいいのか分からなくなる事はあっても、制限なしだと、割と初心者でも関数書くのに困ること無いのが関数型言語の良い所だと個人的には思ってる
オブジェクト指向言語だと、オブジェクト自作するのは意外と面倒だし、メソッド覚えれば、ある意味じゃ関数型言語よりも簡潔なんだけど、リファレンスと睨めっこしてメソッド覚える必要がある
(なので、こう言う処理するメソッド無い?とかの質問がオブジェクト指向言語のスレでは絶えないんだと思う)
0286営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/01(日) 05:19:32.41
ありがとうございます
つまり、無償ではF#でWindowsPhoneの開発は出来ないって事でいいですか?
0295デフォルトの名無しさん
垢版 |
2012/05/11(金) 07:25:02.60
複数のファイル作ったらネームスペースを書けと言われるし
ネームスペース書いたら中に値を置くなと言われるし
0297デフォルトの名無しさん
垢版 |
2012/05/12(土) 10:51:30.16
デフォルトで前方参照ができないとか、まるで20年前の言語のようだ

Scalaと比べると見劣りするなぁ
0298デフォルトの名無しさん
垢版 |
2012/05/14(月) 00:50:46.94
>Scalaと比べると見劣りするなぁ
うわー。言うよねー、Scalaの人って、こういうこと。
0300デフォルトの名無しさん
垢版 |
2012/05/17(木) 00:55:43.23
やはりBetter Javaではなあ…
今までJavaをやって来て超アンチMSだったので
F#の方が逆に新鮮w
0302デフォルトの名無しさん
垢版 |
2012/05/17(木) 09:26:13.63
F#ってBetter Javaだったの!?
0308デフォルトの名無しさん
垢版 |
2012/06/20(水) 16:50:25.33
F#のほーがセンスイイよ
0309デフォルトの名無しさん
垢版 |
2012/06/20(水) 17:54:28.48
主婦の7割が「韓国タレントは嫌い」 地銀シンクタンクが調査した実態とは

日本でのK-POPブームに陰りが見え始めたとも指摘される昨今だが、それでも新たなグループが続々と日本進出している。
今年に入ってからだけでも日韓同時デビューのA-JAX、吉本興業系のレーベルから日本デビューするMYNAME(マイネーム)、
さらには「K-POP最後の大物」との触れ込みで7月にデビュー予定のWonder Girls(ワンダーガールズ)など、相変わらずの
「雨後のたけのこ」状態。それほどまでに日本市場はK-POPにとってオイシイのか、そして本当にK-POPは日本で売れてい
るのか。その実態を探ってみた。

 大垣共立銀行(岐阜)系列のシンクタンクである共立総合研究所による「韓流消費に関するアンケート」の調査結果に、
実に興味深い調査結果がレポートされている。なんと、アンケートに回答した主婦の7割が「韓流は好きではない」との結果だったのだ。

 同研究所は<K-POPの台頭、食品、コスメをはじめとする韓国製商品ブームのマスコミでの取り上げ方、新聞の テレビ欄における
韓国ドラマの占有状況からかなりの盛り上がりを予想したが、結果は予想を下回るものであった>と、調査レポートを結んでいる。

結局、K-POPブームとは単にKARAと少女時代という個別グループのブレイクにすぎず、やはり実体などなかったということか。

http://uramono.org/entertainment/2576.html
http://uramono.org/uploads/2012/06/kara.jpg
0310デフォルトの名無しさん
垢版 |
2012/06/25(月) 18:06:48.86
下のようなコードでF#3.0だと両方呼べるんだが、
let y = (^a : (member talk: unit -> string) (a))
ってどういう仕組みなん?
ちなみに
let y = (^a : (member talk: int -> string) (a))
だと"2式が必要ですが、1が指定されました”と言われてエラーになる

let inline speak (a: ^a) =
let x = (^a : (member Name: string) (a))
printfn "I'm %s" x
let y = (^a : (member talk: unit -> string) (a))
printfn "I say %s" y

type Duck =
{ Name : string }

member x.talk() = "quackity quack"

type Dog(name) =
member x.Name = name
member x.talk() = "arrrr"
0311デフォルトの名無しさん
垢版 |
2012/06/25(月) 18:18:39.27
unit -> string というメンバ「talk」を持っている型 ^a に対して、a という変数を渡してその関数を呼び出してます。

let y = (^a : (member talk: int -> string) (a))
がエラーになるのは、int -> string な ^a 型の関数に対して ^a 型の変数しか渡してないから。
let y = (^a : (member talk: int -> string) (a, 42))
のように、int 渡してあげればいいはずですよ、っと。
0312311
垢版 |
2012/06/25(月) 18:22:12.77
ちなみにインデント重要なので元コードへのポインタ貼っときますね
https://gist.github.com/2964839

もしコピペするんであればlignt syntax使わずに書き直した方がいいかもです。
0313311
垢版 |
2012/06/25(月) 18:24:21.04
> 282
なごやいいとこいちどはおいで!
0321デフォルトの名無しさん
垢版 |
2012/08/25(土) 19:33:41.01
F#がこの先生きのこるには
0323デフォルトの名無しさん
垢版 |
2012/09/18(火) 21:41:33.61
OCamlを勉強してて色々モヤモヤした部分があったけど、
F#で不満だった部分がかなり解消されてて驚いたわ
マイクロソフトさんありがとう、今まで悪口言ってすみませんでした
0325デフォルトの名無しさん
垢版 |
2012/09/19(水) 11:08:31.77
>>322
いやsurface、別に.NET基盤じゃないから。.NET(Core)でも開発できるというだけで。むしろF#ではportable libraryとしてしかアプリ開発に使えないというように虐げられてるw
>>323
まず日本語をなおせ。OCamlで不満だったものがF#で改善されてた言うことか?
0328デフォルトの名無しさん
垢版 |
2012/09/19(水) 11:55:07.05
>323は曖昧な書き方してるけど、理解できるよね。
問題になるとしたら規格書とか論文とかぐらいでしょ。
0329デフォルトの名無しさん
垢版 |
2012/09/19(水) 12:16:11.33
読解力無いというのは、文章から本来の意図を読み取れないという意味だが、>>325はなにか間違ってるのか?
0331デフォルトの名無しさん
垢版 |
2012/09/28(金) 14:07:58.33
過疎の場所でわざわざ煽る奴はアンチじゃないからね
盛り上がって欲しいだけなんだよ
0346デフォルトの名無しさん
垢版 |
2012/11/22(木) 01:10:00.70
アドベントカレンダーって何ですか?
0349デフォルトの名無しさん
垢版 |
2012/11/23(金) 01:32:13.96
>>348
そんな感じだね。
基本はjsコンパイラで後はサーバーとのやり取りを書きやすく出来る仕組みがある感じかしら。
サンプルでチャートアプリ作ったけどF#で書いたロジックがさっくりと動いたよ。
でも情報が少ないから実際の製品での使用はちょっと躊躇しそう。
0352デフォルトの名無しさん
垢版 |
2012/11/24(土) 08:34:14.30
>>350
WebSharperの方が商用のものを切りとってオプソにしてるからクオリティ高そうなイメージ(´・ω・`) 
0354デフォルトの名無しさん
垢版 |
2012/12/04(火) 10:16:01.56
>>353
それ、最近の技術さっくりと触れてるので良いよ。F#での書き方の参考になって良い。関数型としてのことはそんなに深くは突っ込んでないけど。
0355デフォルトの名無しさん
垢版 |
2012/12/22(土) 01:06:09.92
http://tomasp.net/blog/manning-deep-dives.aspx
The book consists of 5 parts that cover the most common real-world uses of F#:
Developing of Analytical Components, Processing and Analyzing Data, Creating End-user Applications and F# in the Larger Context.

There is an increasing number of commercial F# applications. If you want to learn about the domains
where F# can make you more productive and help you to write correct code, or if you want to learn how F# experts approach different problems, then the upcoming F# Deep Dives book is the book for you!
0356デフォルトの名無しさん
垢版 |
2012/12/22(土) 01:09:34.04
洋書だと、二冊のF#2.0本もF#3.0本にアップデートされた以外にも実用本が増えてきたね。
0358デフォルトの名無しさん
垢版 |
2012/12/24(月) 22:07:37.47
'a list list を 'a list にしたいんだけど、どうすればいいの?
Linq の SelectMany したいわけなんだけど。
0360358
垢版 |
2012/12/25(火) 08:40:21.42
ありがとう
0361デフォルトの名無しさん
垢版 |
2013/01/23(水) 00:29:00.59
POPL2013でF#のワークショップがあったみたいで
関数型プログラマーのひとが参加して
webshaperやtryfsharpなどいろいろな面に驚いてるな。
あまり日本では、取り上げられないので羨ましいかも。
0364デフォルトの名無しさん
垢版 |
2013/01/29(火) 20:16:12.35
F#をちょっといじってみたけど
GUI作り辛いし、GUI作ろうとするとあまり関数型っぽくないしで、
本格的に利用しようとすると微妙だな
遊ぶには面白そうだけど
0367デフォルトの名無しさん
垢版 |
2013/01/31(木) 01:11:10.42
056 [2009/06/24(水) 21:07:53] デフォルトの名無しさん <sage>

F#>Java いずれこうなるから安心しろ。

まあJ#は超えたな
0368デフォルトの名無しさん
垢版 |
2013/01/31(木) 19:37:16.95
scalaにも当てはまると思うが
関数型風にも書けるというマルチパラダイムは
結果的にいろんな書き方を覚えなければならないし、
そのいろんな書き方、ってのも癖があって覚えにくい
そのせいでF#らしさというものが希薄になってる、というのが欠点

これがマルチパラダイムの末路だ
結局は、限られた書き慣れてる書き方しかしないんだもんな
0375デフォルトの名無しさん
垢版 |
2013/02/13(水) 13:20:44.23
まさにオナニーに向いているんだろうな

知的好奇心と言えば聞こえはいいが
ようするに自己満足
モノを生み出してナンボでしょ
0378デフォルトの名無しさん
垢版 |
2013/02/13(水) 20:18:11.82
は?F#使ってる人たちは、C#を使ってやるのと同じように仕事なりなんなりでプログラム書いてるだけだと思うけど。
その際に生産性がいいってだけだよ?
なにかF#や関数型を特別な魔法か何かのようにとらえすぎなんじゃね?
0379デフォルトの名無しさん
垢版 |
2013/02/14(木) 07:17:59.45
>>377
仕事でバッチファイルの代わりに.fsxでスクリプトを書いてます
インテリセンスが効くのと、Mainクラス作らなくても頭から実行してくれるので
型推論があるので動的型のように書けるところも好きです
0382デフォルトの名無しさん
垢版 |
2013/02/14(木) 12:25:55.36
>>380
インテリセンスは静的型じゃないと難しいのでは?
普段はC#使いなのですが、.NETとVisualStudioがそのまま使えるっていうのも大きいです
それにVisualStudioがインストールされている環境ならC#と違ってビルド不要で.fsxファイル一つで動きますし
0386デフォルトの名無しさん
垢版 |
2013/02/18(月) 17:51:00.05
こんなのあるのね
http://exselt.net/

何に使うかわからんようなソフトではなく
XSLT 3.0 プロセッサとか実現したら一気にキラーアプリやで

ただダウンロードすらうまくできないのが弱点。
0389デフォルトの名無しさん
垢版 |
2013/02/22(金) 02:26:32.53
BigIntegerと再帰を使ったフィボナッチ数列がC#より簡単にかける
.netにBigIntegerが入ったとかいう話があった気がするが
まあここの時間止まってるようなもんだから
0393デフォルトの名無しさん
垢版 |
2013/02/23(土) 14:56:47.28
F#やってみて、階乗から始まってフィボナッチ、ハノイの塔、クイックソート
正規表現抹茶あたり組んでみたけど、なんか飽きちゃったなあ。
なんか面白いテーマないかな。

プログラマとして勉強になるのかな、と思ってたけど、CでもRubyでもできるよ
ねこんなのは。>>3
0397デフォルトの名無しさん
垢版 |
2013/02/23(土) 16:23:42.54
C#に対するF#の利点は、やはり代数的データ型だと思うんだよな。
代数的データ型の何がいいかって言うと、もちろん宣言的に値の分解ができるからプログラムが読みやすいっていうこともあるんだけど、
データに対する操作の追加が簡単だという利点があると思う。
まぁ、C#でもis演算子かvisitor使えばいいんだけどさ、is演算子だと網羅性チェックしないから書き忘れしやすいし、
visitorは、まぁC#だとlambdaがあるから楽かもしれないけど、でもちょっと面倒くさいし。
それで、代数的データ型がマッチするタスクは何かって言うと、
http://ymotongpoo.hatenablog.com/entry/20111105/1320506449
これのconnection_state型みたいに、いろんなところで使えるものだとは思うんだけど、
一番目立つのはコンパイラ作成の用途かね。C#だとサブクラス作りまくりになる。
実践プログラミングDSLに金融取引を記述するための外部DSLを作る章があったけど、ああいうの。
でもまぁ
http://tomschrijvers.blogspot.jp/2012/12/haskell-tsuru-capital.html
こういう金融ベンチャーっぽいところだと活用してるんだろうけど、普通のプログラマだと活用する機会は少ないだろうなw
0398デフォルトの名無しさん
垢版 |
2013/02/23(土) 17:39:24.06
C#との比較で見たときにキャッチーに利点を説明できる要素
ならまあ代数的データ型ですねぇ。

自動実装プロパティに初期値を与えられるのとかも地味に便利。

member val Count = 0 with get, set
0400デフォルトの名無しさん
垢版 |
2013/02/24(日) 09:54:11.59
>>399
せめてまともな型推論を実装してから出直してくれ。

F#並の簡潔な記述
代数データ型とパターンマッチング
REPL
モナドサポート
イミュータブルデフォルト

最低でもこの辺が出来ないことには話にならない( ´Д`)y━・~~
0402デフォルトの名無しさん
垢版 |
2013/02/24(日) 22:12:05.46
C#のREPLは昔からmonoにはあった。
用途も増えてるようで、最近改良してるみたい。
http://tirania.org/blog/archive/2011/Feb-24.html
http://www.mono-project.com/Release_Notes_Mono_3.0

mono関連で構文解析もMonoDevelop(IDE)のコード支援に使ってるやつがすでにある。
https://github.com/icsharpcode/NRefactory

逆にF#はMSRがオープンソース版を用意してるので、MonoDevelop用プラグインだけMono関連で作られている。
0403デフォルトの名無しさん
垢版 |
2013/03/06(水) 19:30:36.08
#light "off"にして、あと警告がある場合はコンパイル通らない設定にして使ってる。
しかし、F#の構文だと関数適用時のインテリセンスが微妙…。
0404デフォルトの名無しさん
垢版 |
2013/03/11(月) 18:45:28.36
「ビッグデータの世界でF#が大流行、
研究者の心を鷲掴みする謎のプログラミング言語」

ってマジ?
0406デフォルトの名無しさん
垢版 |
2013/03/11(月) 21:55:23.57
>>404
流行しているというか
MicrosoftがBig Dataサイエンティスト界隈に
流行させようと画策しているというのが正しい。

http://www.infoq.com/presentations/F-Sharp-Big-Data-Scripting
bigdataは一回のクエリに時間がかかるので
codeのバグで時間をロスしやすい。
そしてcodeは書き捨てであることが多い。
このようなタスクにはType Providerという
データスキーマの定義を元にクエリの型チェックやインテリセンスを行える機能
を持つF#が適している。
0424デフォルトの名無しさん
垢版 |
2013/04/03(水) 22:16:19.55
本国はTryF#作るまでやる気あるのに
MS日本法人のほういつまでも翻訳せず
やる気が感じられないからしょうがない

英語読めないヤツのほうがもっとやる気ない
とかいうのは無し
0425デフォルトの名無しさん
垢版 |
2013/04/04(木) 23:16:38.72
F#は全社で取り組んむべき題材ではないということだろうな。
いちおう詳しいMSの日本人もいるのかな?
0427デフォルトの名無しさん
垢版 |
2013/04/07(日) 05:35:12.80
TryF#を2ページくらいやったけど
他のプログラミング言語やってないと辛い
4歳児よくできたな・・
0430デフォルトの名無しさん
垢版 |
2013/05/09(木) 15:15:17.55
エクスプローラ上でfsxファイルを右クリックするとRun With F# Interactiveで直接実行できるわけですが
同じようにVS 2010上のfsxファイルを直接実行する方法ってありますか?
F# Interactiveウインドウにfsxファイルをドロップするだけで動いたりしたら嬉しいのですが・・・
0432デフォルトの名無しさん
垢版 |
2013/05/20(月) 02:55:30.08
言うまでもないが、F#3.0はxp vista切り捨てのVS2012でしか動かない
最先端に追従してるF#3.0がD言語より語られてないのは皮肉な話だと思う
VS2012スレもようやくVS2010スレの勢いを超えたというのに・・・
0436デフォルトの名無しさん
垢版 |
2013/06/06(木) 16:55:01.31
vsに統合されることがゴールで
めでたくvs2010とvs2012に標準搭載されたというのに
語る人が全くいなくなった・・・

vs shellの存在意義が未だによくわからん
そこまでやるならスタンドアロンのコマンドラインツールでいいだろ・・・
0438デフォルトの名無しさん
垢版 |
2013/06/06(木) 21:09:08.17
MSKKの人は「F#とか流行るわけねーだろwwwww」みたいなこと言ってた
え、MSの人がそんなこと言っていいの?とか思ったけどだまってた
0439デフォルトの名無しさん
垢版 |
2013/06/06(木) 21:46:31.57
GHC(Haskell処理系)プロジェクトのコアメンバーにMSの研究員がいるんだけど、
彼はF#について、そしてF#の名がMLに贈られたことについてどう思ってるんだろ?
0441デフォルトの名無しさん
垢版 |
2013/06/07(金) 00:12:41.32
MSRには、会社に研究内容制限されず、勲章を運んでくるのがお仕事になるトップ論文投稿者がたくさんいるらしい。
アップルはジョブズがもどったときに全員首切ったという伝承がある。
どちらかというと、Don SymeがわざわざMSのためにF#作ってる理由が知りたい。
0442デフォルトの名無しさん
垢版 |
2013/06/15(土) 03:29:35.49
VS2010でF#のプロジェクトに新しいフォルダを作成して追加するにはどうすればいいでしょうか?
0444デフォルトの名無しさん
垢版 |
2013/06/17(月) 01:10:42.30
>>443
それを聞いて調べたところF# Project Extenderを入れれば良さそうなのでさっそくいれてみましたが
Enable F# Project Extenderをクリックするとエラーが出たので諦めます(´・ω・`)
0451デフォルトの名無しさん
垢版 |
2013/07/15(月) NY:AN:NY.ANID:um2YQEwB!
最初moduleでモジュール化してたけど
途中から型や値をパラメータ化したくてclassに変えようとしたら
構文が違いすぎてあと内部classも作れなくて死んだ
0453452
垢版 |
2013/08/05(月) NY:AN:NY.AN
>>450
22 D 0.567%
23 F# 0.538%
24 Lua 0.531%

34 Haskell 0.349%
35 Erlang 0.344%
36 Prolog 0.334%
37 Scala 0.332%

うーんとしか・・・
0456デフォルトの名無しさん
垢版 |
2013/08/18(日) NY:AN:NY.AN
結局MonoDevelop諦めちゃった…
0457デフォルトの名無しさん
垢版 |
2013/08/20(火) NY:AN:NY.AN
>>455
そこらへんは、作者に言わんと永久に治らないかも。
githubで開発してると思うから作業リストには入るだろうし。
>>456
まだベータ版ぐらい?
そう言えば、monodevelopやxamarinstudioだと実行がうまく出来ない環境があって悩むことがある。
0458デフォルトの名無しさん
垢版 |
2013/08/21(水) NY:AN:NY.AN
>>457
どっちも同じ人間だよ
git上のFSharpBindingsだと順序変更はできるようになってた
でも新しいMonoDevelopが必要で自前でそれもビルドしたから
設定がとても面倒だった

その後MonoがWinFormsに実質未対応なのに気づいて
それでも他の部分だけと頑張ったけど
IDEそのものが自分には使いづらくて無理だった
F#は素直にVSでやることにした
0459デフォルトの名無しさん
垢版 |
2013/09/06(金) 06:21:51.94
具象型にいちいちインターフェース型をキャストすんのめんどくさ!
これ一つづずつ実装するかキャストしないといけないのか?
0460デフォルトの名無しさん
垢版 |
2013/09/06(金) 19:49:58.03
実装を意識したくないからインターフェースをはさんでるので
キャストしちゃうと台無しですよ。
0461デフォルトの名無しさん
垢版 |
2013/09/06(金) 22:06:13.15
>>460
すみません、逆方向です

let impl :ISome = new Impl() ;> ISome

こんな感じで一旦アップキャストするのが面倒なんです

単にISomeを実装しただけではImpl型でメソッドを呼び出せないので
実装のテストだと例えば3つ実装していた場合、
毎回使用するインターフェイス別にキャストしなくてはいけない
それかImpl自体にそれぞれ同名のメソッドを用意するしかない

他言語ともやりとりするので手軽に注釈なし'a 扱いもできません
私が何かとてつもない勘違いしてるんですかね…?
0463デフォルトの名無しさん
垢版 |
2013/09/06(金) 22:38:38.48
なんで:ISomeと型を定義してんの?

インターフェースぐらいは暗黙に変換してくれてもいい様には思うが、F#では元々そんなインターフェース使わんからなぁ

Interopするなら別かもですが。
0464デフォルトの名無しさん
垢版 |
2013/09/07(土) 03:17:27.69
>>463
>なんで:ISomeと型を定義してんの?
こうしないとメソッドが呼び出せないからですね
でなければ呼び出す度にキャストすることになってしまうので

ただ雰囲気は大体わかりました
F#でクラス使ってOOしちゃいけないみたいですね…
ありがとうございました
0465デフォルトの名無しさん
垢版 |
2013/09/07(土) 04:52:09.47
>>464
いや右辺で型決めてんだから、左辺は書く必要無い。
オブジェクト指向もしちゃいけないじゃなくてやる必要が無いだ。

とりあえず関数型とF#勉強してから自分が書いた事を見直してみろ
0466デフォルトの名無しさん
垢版 |
2013/09/07(土) 13:33:50.24
>>465
すみませんが、問題にしてるのはキャストですので
可能であればそちらより解決策の提示を願います

>オブジェクト指向もしちゃいけないじゃなくてやる必要が無いだ。
それは現に必要な人間に言っても意味がないです

>とりあえず関数型とF#勉強してから自分が書いた事を見直してみろ
関数型はOCamlもHaskellも使ってます
私は純粋に外部利用のための解決策がないか探っているだけです
0468デフォルトの名無しさん
垢版 |
2013/09/07(土) 18:21:28.54
>>461
>let impl :ISome = new Impl() ;> ISome
>>465さんも書いてますけど右辺で型が分かるので左辺は必要ないですよ。

>単にISomeを実装しただけではImpl型でメソッドを呼び出せないので
ISome型に定義されてるメソッドは呼び出せます。
ISome型で参照してるならImpl型で追加されたメソッドが
呼び出せないのは当然かと。

ここまで書いといてなんですが
私もF#は勉強中でOOP視点でレスしてます。

間違っている所があれば詳しい方、訂正お願いします。
0469デフォルトの名無しさん
垢版 |
2013/09/07(土) 22:36:02.91
>>468
> >>465さんも書いてますけど右辺で型が分かるので左辺は必要ないですよ。
大丈夫ですそこは理解してます
問題としているのは右辺のキャストです

私はレスを「なぜそこで型をキャストするのか」と解釈したので、
変なレスになってしまいました
左辺値の注釈は型推論でつまずくことが多いので癖で書いてます

>ISome型に定義されてるメソッドは呼び出せます。
上でも書いてますが、実装型をnewしても
1. インターフェース型にキャストする
2. インターフェース型を実装したものとは別に
  実装型に同名のメソッドを追加する
このどちらかをしないと同名のメソッドは呼び出せません
これが複数のインターフェースを使うとなるとその都度キャストという事になります
0470デフォルトの名無しさん
垢版 |
2013/09/08(日) 11:15:36.34
>>469
インターフェースの明示実装を利用しているため、明示的にキャストしたいということですね。

しかしこの場合、実行させたい関数等にtype hinting付けて、そこで指定したインターフェースのメソッドを呼ばせるべきだと思います。

これは、F#に限らず、C#でも同様です


また、もしそれがコンストラクタである場合も同様に、外部から注入すべきでしょう(依存性反転の原則)。

どうしても呼び出し先で、生成->実行したいのであれば、ローカル関数を経由すればいいと思います。
0471デフォルトの名無しさん
垢版 |
2013/09/08(日) 12:14:47.31
>>470
明示的にキャストしたいじゃなくてしたくないんでしょ。

インタフェースのメソッド呼ぶために関数を通させる意味が分からないんだけど、関数型のスタイルに合わせるため?

IHogeにキャストしたいなら、それをするiHとか短い関数作って(iH o).HogeHogeとかでいーんじゃねーの。
そもそもキャストが頻繁に起きるなら設計がおかしいだろ。
同じオブジェクトを各場所で適切なインタフェースとして保持管理出来てるべき。
0472デフォルトの名無しさん
垢版 |
2013/09/08(日) 13:05:41.78
>>470
大変参考になりました
特に注釈付き引数について、暗黙の挙動は存じておりませんでした
引数には適用されるんですね

DI部分に関してはもっともな意見だと思います
ただ、実装の確認テストの際に煩雑になるので、
テストしながらの作業では、その手間が惜しいです

そこでほしいのは明示的でないインターフェイス実装か、その代替です
この点はC#では同様ではないと思います

単なるわがままを続けても仕方がないので、これ以上は控えます
レスありがとうございました
0473デフォルトの名無しさん
垢版 |
2013/09/08(日) 13:30:14.10
すみません見逃してましたのでもうひとつだけ

>>471
アップキャストは設計上頻繁に起こっても全然おかしくはないです
というより良い設計では何でもインターフェイスにしますよ
逆に特定のインスタンスや型を扱うのは危ないです
0474デフォルトの名無しさん
垢版 |
2013/09/08(日) 15:16:04.41
>>473
そうじゃなくて複数のインタフェースを実装して、その場所場所でこのインタフェースを実装してるか的なことをしないといけないのがダメっていってんの。

そうで無ければ具象クラスをそのインターフェースとして扱い始める大元でキャストするだけであって使うたびにキャストがーなんて話はでてこない。
0475デフォルトの名無しさん
垢版 |
2013/09/08(日) 18:23:32.98
>>474
もちろん基本的にはそうだと思ってますよ
しかし、書いてるのはインターフェイスとしての扱いでなく、
実装動作そのもののテストコードです
実装クラスのメソッド呼び出しの手間について話しています

ここまで特殊化された物に一つずつインターフェースを書いて
それを使ってという事をする気はありません
なのでダメと言われても困ります
0476デフォルトの名無しさん
垢版 |
2013/09/08(日) 18:26:04.95
念の為付け加えますが、インターフェースの要件としてのテストコードは別にあります
問題にしているのは個々の実装クラスの特殊な動作を調べるコードです
0477デフォルトの名無しさん
垢版 |
2013/09/08(日) 19:12:41.19
>>475
お前がインターフェースの呼び出しがめんどくさい言ってて今更インタフェースの扱いじゃないってなんなの?

後段のインタフェースを書いてとかも意味分からん。
何したいの?もうめんどくさいから楽なC#でかけば?
0478デフォルトの名無しさん
垢版 |
2013/09/08(日) 19:28:18.01
>>477
実装したメソッドを呼び出しするのが面倒だと何度も言ってるでしょう?
本当に理解できてます?わざと言ってるんですか?
0479デフォルトの名無しさん
垢版 |
2013/09/08(日) 19:31:50.35
すみませんついカチンと来てしまいました、謝ります
上に書いたとおりの手順でやってみればどういう意味かわかると思います
0481デフォルトの名無しさん
垢版 |
2013/09/08(日) 21:14:51.26
>>479
だからさー
上に書いた通りの手順でとか言われてもエスパーじゃないからわかんねーよ。
せめてアンカーでもつけたら?
お前の質問の仕方は相手にとってどう理解しやすくするかって視点が全てにおいて欠如してんだよ
0482デフォルトの名無しさん
垢版 |
2013/09/08(日) 21:28:38.91
こういうのはどう?

type ICounter =
 abstract member Inc : unit -> unit
 abstract member Count : unit -> int

type Counter(seed : int) =
 let mutable cnt = seed
 member this.i = this :> ICounter
 interface ICounter with
  member this.Inc() = cnt <- cnt + 1
  member this.Count() = cnt
0490デフォルトの名無しさん
垢版 |
2013/09/15(日) 21:11:33.10
>>488
なんだ、お前そんなのも知らんのとかいいたいだけのカスか
どんだけこのスレ過疎ってると思ってんだよまったく
そんなんだからF#がこんなかわいそうなことになってんだろ

あげ
0491デフォルトの名無しさん
垢版 |
2013/09/15(日) 21:12:22.99
>>488
こんな過疎スレなのにこんな人間のクズしかいないとは哀れすぎる
0492デフォルトの名無しさん
垢版 |
2013/09/15(日) 21:18:26.19
そもそもスタンドアロンで使ってる奴がどんだけいるわけ?
なめてんじゃねえよ
0494デフォルトの名無しさん
垢版 |
2013/09/15(日) 23:08:27.79
>>493
だから解説になってねえんだよバカタレが
なんだ、お前そんなのも知らんのとかいいたいだけのカスか
さっさと消えろ
0495デフォルトの名無しさん
垢版 |
2013/09/15(日) 23:10:32.47
>>493
なんだ、お前そんなのも知らんのとかいいたいだけのカス
0496デフォルトの名無しさん
垢版 |
2013/09/15(日) 23:13:23.78
>>488
スタンドアロンで使うのがどれだけ普通なのか
わざわざしゃしゃり出てきたお前が解説しろ
0497デフォルトの名無しさん
垢版 |
2013/09/16(月) 00:31:15.46
>>494-496
だから>>486でイミフな絡み方してるから日本語の解説してやっただけだろ。
教えてくんならそれらしく下手に出てればいいのに。
>>484でスタンドアロンがいいっていうから>>485がスタンドアロンでインスコできるだろって親切に教えてやって>>486で逆切れしてるながれなのに、スタンドアロン環境が普通かどうかとかってそれ論点じゃねーだろw
塚その日本語能力のなさお前ら同一人物だろwww
情報ないのかと思ってぐぐったら簡単に見つかったけど教えてやらんわ(´・ω・`)
0498デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:52:48.07
>>497
迷惑なやつだなおまえ
スレタイ読んで書き込んでんの?
0499デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:54:02.20
>>497
いや同一人物ってわかるだろ
どんだけバカなのおまえ・・・
0500デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:55:53.81
>>497
> だから>>486でイミフな絡み方してるから日本語の解説してやっただけだろ。
> 教えてくんならそれらしく下手に出てればいいのに。
おまえのがイミフ
日本語の解説ってそういうスレなの?
スレタイ読んでどうしても日本語の解説したかったとか
くだらん頭おかしすぎ
0501デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:58:51.30
> 情報ないのかと思ってぐぐったら簡単に見つかったけど教えてやらんわ(´・ω・`)

おまえ・・・やっぱり知らないくせに適当に書き込んでたんじゃん
だからさ俺が知ってるとかじゃなくて
ちゃんと知られてないからマイナーなんだよって言ってんだけど?
相当くずだなおまえも

>塚その日本語能力のなさお前ら同一人物だろwww
これはあたまおかしすぎ
過疎スレの皆さんにごめんなさいしろよゴミ男が
0502デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:59:36.35
大事なことなので訂正
× 相当くずだなおまえも
○ 相当くずだなおまえが
0503デフォルトの名無しさん
垢版 |
2013/09/16(月) 03:05:58.44
>>484でスタンドアロンがいいっていうから>>485がスタンドアロンでインスコできるだろって親切に教えてやって>>486で逆切れしてるながれなのに、スタンドアロン環境が普通かどうかとかってそれ論点じゃねーだろw

>>485のどこが親切なんだよ
おまえの国じゃこれが親切なのかくずだなすばらしいね
おまえスレ違いすぎだからスレタイよく読んで書き込めカス
スタンドアロンでの使われ方は普通には知られてない裏技的なものだし

それに俺の言いたい論点はこれだけ
>なんだ、お前そんなのも知らんのとかいいたいだけのカスか

おまえみたいに無自覚に迷惑かけてるやつが一番迷惑だからさっさとでてけ
0504デフォルトの名無しさん
垢版 |
2013/09/16(月) 03:08:44.77
なんだ、お前そんなのも知らんのとかいいたいだけのカスか
0505デフォルトの名無しさん
垢版 |
2013/09/16(月) 03:11:13.20
>fsiやfsc はスタンドアロンでインストールもコンパイルもできるだろ?

これが親切に教えてくれてるとかどういう頭の構造してんだよ
なんだ、お前そんなのも知らんのとかいいたいだけのカスじゃないか
0515デフォルトの名無しさん
垢版 |
2013/10/07(月) 08:08:19.11
>>514
これ。
http://www.amazon.co.jp/dp/4798039152
今F#のところを読んでたらスクレイピング処理が結構複雑だったから
F#のような高級言語でやる必要性があるかもしれないとは思った。
株価データを扱ってるから、金融の人に興味を持ってもらおうという魂胆?
0516デフォルトの名無しさん
垢版 |
2013/10/07(月) 10:21:26.00
あー前つぶやかれてはったなー
中身知らんけど一つの方法としてF#か^が楽ならいいんじゃない?

まぁ誰もその表紙で中にF#が出てくるとは夢にも思うまいに。
0517デフォルトの名無しさん
垢版 |
2013/10/07(月) 11:45:29.27
昔はVBAで結構いろんな事やってたんだろうね
今、イチからやるならあえてVBA経由する必要は無いと思うけど
0519デフォルトの名無しさん
垢版 |
2013/10/08(火) 22:14:22.67
なんか呼ばれてた。

どうなんでしょうね。著者の方が決めたテーマですから。
僕はそれをコードに落とし込んで原稿にしてってとこを
お手伝いしただけなので。

F# でやる意味、というか、ネタ的な章という位置付けで。
.NET の言語とも連携できるんだよーって紹介でもあり。

なら C# でいいじゃん、ではあるけど、VBA 使いでもある
僕の感覚としては、OOP な C# よりも、モジュール、関数
が書ける F# のが割となじむような気はします。
0522デフォルトの名無しさん
垢版 |
2013/10/08(火) 23:55:38.09
最終章の Chapter11 が F# ネタ。たぶん30ページくらい。

www.shuwasystem.co.jp/products/7980html/3915.html

正直 F# の勉強にはあまり向かないと思います。

あくまで、F# で作った dll を VBA から叩くために COM 相互運用
機能を利用するにはどうやるかに主眼を置いていて、VBA な人にも
F# に興味を持ってもらえたらなあって内容なので。
0523デフォルトの名無しさん
垢版 |
2013/10/09(水) 00:37:55.49
なるほど ありがとうございます。
本屋で見かけたらとりあえず少し立ち読みして買うか考えようかな
0529デフォルトの名無しさん
垢版 |
2013/10/18(金) 14:00:10.15
>>518
MEAPから見出しを抜粋するとこんな感じ:
4 Numerical computing in finance domain
4.1 Introducing financial derivatives
4.2 Using probability functions of Math.NET
4.2.1 Configuring F# Interactive
4.2.2 Download and Set up Math.NET Numerics
4.2.3 Introducing Random Variables, Expectation and Variance
4.3 Geometric Brownian Motion and Monte Carlo Estimate
4.3.1 Modeling stock prices using geometric Brownian motion
4.3.2 Payoff Function, Discounted Payoff, and Monte Carlo estimate
4.3.3 Analaysing Monte Carlo estimates using variance
4.3.4 Pricing oath-dependent options
4.3.5 Variance reduction using antithetic variates
著者はChao-Jen Chenだそうな。
0530デフォルトの名無しさん
垢版 |
2013/10/26(土) 00:51:59.61
type T = [<Leaf>]A | [<Node>]B of T * T
この型Tに対して
let rec size = function A -> 1 | B(x,y) -> 1 + size x + size y
こんなような関数を大量に自動生成したいんだけど
Reflection+CodeDom以外に選択肢ある?
0531デフォルトの名無しさん
垢版 |
2013/10/26(土) 15:57:40.32
>>530
直感的に思いつくのはT4だけど、F#プロジェクトではサポートされてないから
T4用にC#かVBのプロジェクトを追加して、そっちで生成したファイルをF#プロジェクトに追加すればいいかもしれない。
stackoverflow.com/a/2199527
0533デフォルトの名無しさん
垢版 |
2013/11/21(木) 06:01:23.06
盛り上がってるね。
0536デフォルトの名無しさん
垢版 |
2013/12/08(日) 18:46:21.38
発表当時の方が、順位高かったという、、
msdnでドキュメント公開されたタイミングでのカウントが大きいのかもね。

msdnでF#のドキュメントが日本語になってるのは凄いとおもうが、MSでF#セミナーやってるとか聞かないし、宣伝部隊がいないんじゃないかな?
http://msdn.microsoft.com/ja-jp/library/dd233154.aspx
0537デフォルトの名無しさん
垢版 |
2013/12/08(日) 20:16:26.82
VisualStudioで扱える関数型ということで期待したが、
言語仕様が古臭すぎて萎えた。

・ ソースコードのコンパイル順序を指定
・ 基本的に後方参照不可
・ 循環参照にはキーワードが必要

1980年代にタイムスリップした気分だぜ。
0538デフォルトの名無しさん
垢版 |
2013/12/09(月) 19:19:17.64
>>537
実際それぐらいまで一度戻って、プログラミング遍歴を全部やり直すぐらいの覚悟はいるかも。得られるものは大きいけどね。
0539デフォルトの名無しさん
垢版 |
2013/12/09(月) 19:25:15.19
>>537
むしろその方がどこで参照されるか想定できるから俺は嫌いじゃない
0541デフォルトの名無しさん
垢版 |
2014/01/01(水) 20:59:15.21
RProviderでCRANを使う場合ライセンスってどうなる?
もしRProvider経由でGPL汚染するならCRANは件並みGPLだからオワタ\(^o^)/
0545デフォルトの名無しさん
垢版 |
2014/01/04(土) 11:30:09.14
F#はJ#のようにVSの一部でしかないのですっかりPowerShellより日の当たらない存在
スタンドアロンで使えるじゃねえかといかいうバカも居るけど
そうやって使ってる奴はいないわけで
0546デフォルトの名無しさん
垢版 |
2014/01/04(土) 12:22:57.82
F#専用サイトだったhubFSがFPishという関数型言語総合サイトに変わって数年たつし
F#の話題がないのは海外でも同じなんだよね
日本の弱小ブロガーだけがスタンドアロンで余裕で使えるわ!、
などとおつよそうに喧嘩売ってくるという有り様
0547デフォルトの名無しさん
垢版 |
2014/01/04(土) 13:19:08.08
海外でも国内でも使ってことのある人の中ではバランスのとれたとても良い言語となってると思うけど…
Xamarinの方でも積極的に取り入れてるし一定の評価えてるとおもうけどな。
F#のコミュニティ見てるのでそれ以外の声が全然ないかは知らん。
自分は必要ない限り極力F#使ってC#成分はできるだけ減らしてる
0549デフォルトの名無しさん
垢版 |
2014/01/06(月) 11:07:56.94
構文木をこねくり回すプログラムを書く必要があったからF#使ってたけど
最近は数値計算が多くてなんかもうC#に絞った方がいいんじゃないかって気がしてきた
F#の利点は何かありますか?
0550デフォルトの名無しさん
垢版 |
2014/01/06(月) 11:22:48.48
>>549
むしろC#で書く利点がなに一つなくね?
0553デフォルトの名無しさん
垢版 |
2014/01/06(月) 15:58:12.72
そういえば、F#のMVPであるbleisという人が、彼女が出来てリア充になったそうな。
F#erになるとリア充になれる!?
0554デフォルトの名無しさん
垢版 |
2014/01/06(月) 17:55:13.35
>>550
数値計算本のアルゴリズムはだいたいCとかで書かれていて
ループ内でbreakやcontinueが使われているものが多いんだわ
だからF#で書きなおす際に頭を悩ますというのが最大の問題
あとx *= 2.0とか書けない
0555デフォルトの名無しさん
垢版 |
2014/01/06(月) 20:44:57.02
VSバージョンあごるごとにインストール方が微妙になって行ってるのはなんなの
どこがスタンドアロンで余裕なんだよ

>>553
それは花王デモの主催者が彼女出来て活動終了したのと同じで本人次第
花王デモやF#を選んだのが正解だったというわけではない
>>554
コア部分のロジックをF#で書けばいいんだ!なんて
息巻いてた奴らクソうざかったんだけども彼女が出来てやめたんだろうな
>>550はブサすぎてできないらしい。こういう奴もいるから
0556デフォルトの名無しさん
垢版 |
2014/01/06(月) 20:47:17.42
バージョンあごる、はこっちの方言だからあってるからな
件並みは方言ではないけど
0558デフォルトの名無しさん
垢版 |
2014/01/06(月) 23:25:46.21
>>554
業務でCで書かれた配列の更新とかループバリバリのアルゴリズム、F#で書き直したらすごいスッキリしたよ。
0559デフォルトの名無しさん
垢版 |
2014/01/06(月) 23:28:00.85
>>552
C#人口が多いのは確かにありだね。
うちの会社は勉強会とかしたら色々と難しそうだけどいいんじゃね?って話になって導入が進みそう。
0561デフォルトの名無しさん
垢版 |
2014/01/07(火) 21:13:51.84
IDEを使えないスタンドアロンには意味は無いからな
UNIX勢だって補完なしでCUI使うやつなんかいないよ
3.1はVS expressではまだ使えないのか
0562デフォルトの名無しさん
垢版 |
2014/01/07(火) 21:57:12.38
MonoDevelopならいけんじゃね
0564デフォルトの名無しさん
垢版 |
2014/01/08(水) 02:19:46.83
スタンドアロンでコンパイルしてみたらリファレンス関連が不明過ぎてこれはアカン
調べてもexpress使えだし
0565デフォルトの名無しさん
垢版 |
2014/01/08(水) 03:14:32.67
2013は不明なのでVS express 2012をインストール
拡張機能からテンプレをインストールしてきた
F#関連で最もダウンロードされてるのは
F# C# MVC4
ってのが71729ダウンロードだった

この感じだとF#本で10000部はありえないな
1000部くらいか・・・?
0566デフォルトの名無しさん
垢版 |
2014/01/08(水) 04:06:52.86
2012 expressでやってみたらあっさりビルドできたわ
コマンドラインみたらどっさり。
これ--noframeworkして全部dll書かないとダメなのね
まあコピーしてbatなりmsbuildなりでなんとかなりそうだが
これは初心者じゃスタンドアロン無理だわ

IDEの何が嫌ってちょっと試すだけでプロジェクトだのソリューションだの
名前付けないとダメなとこよ
scratchで書きなぐりたいんだがな
でも補完とかはさすがに便利
0567デフォルトの名無しさん
垢版 |
2014/01/09(木) 03:16:32.87
パソコン変えたのもあるけどf# 2.0のころに比べるとだいぶ軽くなってて驚いたよ
fsi xxx.fsx でも実用レベルだし
ただ全然忘れてるから昔書いたものが暗号状態だわ
powerpackとかもどうなってるのか謎
0568デフォルトの名無しさん
垢版 |
2014/01/09(木) 09:40:04.45
そんな重いことあったっけ?
i5,7しか使ってないけど重さ気にしたことがない(´・_・`)
0575デフォルトの名無しさん
垢版 |
2014/03/14(金) 15:35:34.96ID:Vwn/0IeX
>>570>>571
あ?
スタンドアローン連呼してた人だけど
逃げたとかおかしいだろ
今までのが不十分だったからMSが対応したんだろ?
MSの対応は歓迎だとしか言いようがないが。
人が少ないからって開き直ってごまかせると思うなよ?

むしろ今までだってスタンドアロンくらいあるわとか
親切に教えてやったとか言いはってたヤツは逃げちゃった?
MSが対応する余地があったってことは明白なのに
無駄に叩いてきたのはお前らだろうが
現状で十分だと言いはってたんだから公害としか言いようがない
人が少ないからって開き直ってごまかせると思うなよ?

強制IDで消えろよゴミどもw
俺はもともとID変えてるから困らんけどなw
覚悟しろゴミクズ
0576デフォルトの名無しさん
垢版 |
2014/03/14(金) 15:41:16.74ID:Vwn/0IeX
>>570>>571
この開き直りは醜すぎるな
スタンドアローン登場は歓迎に決まってるだろ?
すでにあった>>485とかお前そんな事もしらんの?>>488とか
からみ方が意味不とか情報ないのかと思ってぐぐったら簡単に見つかったけど教えてやらんわ(´・ω・`)とか
喧嘩売ってた>>497
は逃げちゃった?

情報ないのかと思ってぐぐったら簡単に見つかったけど教えてやらんわ
の割にはMSが改めて対応しちゃったけどw
0577デフォルトの名無しさん
垢版 |
2014/03/14(金) 15:43:04.00ID:Vwn/0IeX
なにがスタンドアローン連呼くんだよ
迷惑なのは
>>570>>571の方だ
情報ないのかと思ってぐぐったら簡単に見つかったけど教えてやらんわ(´・ω・`)とか書いてた>>497
だろ

逃げちゃった?
無様だなw
0578デフォルトの名無しさん
垢版 |
2014/03/14(金) 15:44:51.27ID:Vwn/0IeX
>>568
F#1.0とかVS統合前に使ったこともないような情弱は黙ってたら?
0579デフォルトの名無しさん
垢版 |
2014/03/14(金) 15:47:47.96ID:Vwn/0IeX
>>558
> 業務でCで書かれた配列の更新とかループバリバリのアルゴリズム、F#で書き直したらすごいスッキリしたよ。

ただの自己満
まともなところならちゃんと検証するわけだけど
報酬すら出ないような箇所なんだろうな
0580デフォルトの名無しさん
垢版 |
2014/03/14(金) 15:52:07.33ID:fuyZXWFL
>>570>>571
スタンドアローンくんだけど
ほんとに来てほしいと思ってるの?
それでF#の話してもらえると思ってるの?
甘えるなクズが
F#の話じゃなくて人をからかいたいだけのやつは迷惑だから来るな

こういうクズが強制IDでいなくなるといいわ
0583デフォルトの名無しさん
垢版 |
2014/03/14(金) 20:59:40.27ID:bbGk2WDX
こいつは何と戦ってるんだ(´・ω・`)
0590デフォルトの名無しさん
垢版 |
2014/04/03(木) 19:30:35.53ID:GFa/HW2b
自営業だから他人に見せない部分でこの言語使ってるけど
他にどんな人が使ってるのか想像もできない
金融で使ってる人いるの?
0591デフォルトの名無しさん
垢版 |
2014/04/03(木) 20:03:23.18ID:3wZs6sQe
NVIDIAのGTCってイベントに行ってきたんだけど、F#の中で
ASTをいじってCUDA向けのPTXコードを吐いてGPUを使うって言う
トークがあって、すげーと思った。スウェーデンの金融系IT会社だった
やたらF#推しててワロタ
0593デフォルトの名無しさん
垢版 |
2014/04/03(木) 23:50:27.22ID:vBXhJQCy
これかな?
http://on-demand.gputechconf.com/gtc/2013/presentations/S3055-Dynamic-CUDA-with-F-Sharp-v3.pdf

http://fsharp.org/use/gpu/
オープンソース版の公式ページにも一番上に載ってるようだ。

数年前は、1人で博士課程でやってるのやつが紹介されてたけど、
実用品には、よってたかって開発されてるようなものじゃないと、自分でなんとかしないといけなくなったり、、、
0594デフォルトの名無しさん
垢版 |
2014/04/04(金) 08:11:01.75ID:14aTz2cV
>>590
金融と言う程じゃないけどデイトレアプリとかそのサーバーとかに使ってる。
つか言語指定されなければ何にでも使うと思う。
C#はだるすぎる。
0595デフォルトの名無しさん
垢版 |
2014/04/04(金) 11:06:54.60ID:FR4h37Hv
>>593
うん、その会社。リンク張ってくれたプレゼンは去年のだけど。
今年のはまだ公開されてない。1,2週間くらいで公開されるはず
0596デフォルトの名無しさん
垢版 |
2014/05/30(金) 01:35:59.48ID:LWM5+FrT
condは爽快感あるけどパターンマッチはあんまりない、
コマンド必殺技と弱キックって感じ
0597デフォルトの名無しさん
垢版 |
2014/08/08(金) 18:07:16.51ID:EJLhYX8C
過疎りすぎワロタ…
上がりそうな株の銘柄を発掘するアプリを途中まで書いてたが
結局scalaで書き直してしまった
F#もscalaも大差無いけどF#はオフサイドルールのせいで自動整形できないのが面倒だわ
0600デフォルトの名無しさん
垢版 |
2014/09/01(月) 17:59:14.45ID:Vs+BnQy2
pythonでオフサイドルール以外は書く気が起きない体になってしまったのでF#の存在は有り難い
0602デフォルトの名無しさん
垢版 |
2014/11/18(火) 17:32:17.94ID:nqmEmvVP
盛り上がらないなここ
F#入れてみたぜ
0614名無しさん@そうだ選挙に行こう
垢版 |
2014/12/13(土) 23:37:59.12ID:i7CM9zEs
Haskellをちょっとかじったのが役に立った
Visual StudioのF#向け機能がC#とかに比べて貧弱すぎ
リファクタリング機能くらい標準でつけてくれ
0618デフォルトの名無しさん
垢版 |
2014/12/22(月) 17:21:24.66ID:P7oBnA96
>>611
毎回そんなでかいファイル配布して平気ならもちろんそれでいいし
だから本家ランタイムの配布がなくてもいいという話にはならない
別の話
0619デフォルトの名無しさん
垢版 |
2014/12/22(月) 17:30:22.32ID:P7oBnA96
PowerToolsはOCaml互換機能とかでVisualStudioの機能とは関係ない

リファクタリングくらいとかいうが
C#とかだってその機能つくまでそれなりに時間かかってるはず
0620デフォルトの名無しさん
垢版 |
2014/12/22(月) 19:42:10.53ID:ECOw4I7p
俺なりに整理してみると

F#2.0ランタイム
Microsoft Visual Studio 2010 F# Runtime 2.0
http://www.microsoft.com/ja-JP/download/details.aspx?id=13450

F#3.0(3.1)ランタイム
Visual F# Tools 3.1.2
https://www.microsoft.com/en-us/download/details.aspx?id=44011

F#4.0(Visual Studio 2015用プレビュー)ランタイム
Visual F# Tools 4.0 Preview
http://www.microsoft.com/en-us/download/details.aspx?id=44941

--standaloneをつけずにビルドしたアプリケーション、ライブラリは
上記のランタイムが必要になる
(インスコしないとUnhandled Exceptionが発生する)

--standaloneで約1.3MBファイルサイズが大きくなる(F#3.0の場合)

肝心のライセンスはどうなってるんだ。識者頼む
俺の貧弱な読解力だと分からない
0624デフォルトの名無しさん
垢版 |
2014/12/29(月) 12:31:51.39ID:+b4a8prP
ms配布ってのが、抜けてた。

opensource版は、Apacheライセンスだな。
https://github.com/fsharp/fsharp/blob/master/LICENSE
ms配布のruntimeは、いつもの配布用のライセンスかな。

そう言えば、その下のCLR/CLI配布は、msよりmonoのランタイムの方が、GPL/商用デュアルライセンスで厳しかったりする。
0629デフォルトの名無しさん
垢版 |
2015/02/18(水) 13:13:29.83ID:jy9NcG0p
C#と、本番環境がWindowsの仕事しています。
運用系のスクリプトなり、ちょっとしたデータ編集などを PowerShell で書くのがイヤなので、
.NET で動く簡易なスクリプトを探していたのですが、F# にたどりつきました。
JavaのGroovyみたいに、C#用のdllをF#で呼べるのがいいですね。
0639デフォルトの名無しさん
垢版 |
2015/02/20(金) 22:16:28.24ID:ViMY7LAQ
C#はC/C++の焼き直し、J#はJavaベース。
だから最近まで、F#は.NET版FORTRANと思って無視してた。
0643デフォルトの名無しさん
垢版 |
2015/02/27(金) 18:49:28.82ID:mwmXoOej
次の書き込みはまた二ヶ月後ですか
0644デフォルトの名無しさん
垢版 |
2015/02/28(土) 01:00:37.05ID:L/NnvF7q
>>581
煽り耐性とかそういう話じゃねえよ覚悟がないなら喧嘩売ってくんな
0645デフォルトの名無しさん
垢版 |
2015/02/28(土) 01:01:20.92ID:L/NnvF7q
>>582
いちいちIDしたとか報告いるのかね
必要な情報なのかね?さっぱりわからんのだけど
荒らしにしか見えんわ
0646デフォルトの名無しさん
垢版 |
2015/02/28(土) 01:01:50.96ID:L/NnvF7q
>>583
喧嘩売ってきたほうが悪い
0647デフォルトの名無しさん
垢版 |
2015/02/28(土) 01:02:28.45ID:L/NnvF7q
>>645>>582
いちいちIDをNGしたとか報告いるのかね
必要な情報なのかね?さっぱりわからんのだけど
荒らしにしか見えんわ
0648デフォルトの名無しさん
垢版 |
2015/02/28(土) 01:02:55.78ID:L/NnvF7q
F#専用サイトだったhubFSがFPishという関数型言語総合サイトに変わって数年たつし
F#の話題がないのは海外でも同じなんだよね
日本の弱小ブロガーだけがスタンドアロンで余裕で使えるわ!、
などとおつよそうに喧嘩売ってくるという有り様
0650デフォルトの名無しさん
垢版 |
2015/02/28(土) 09:15:28.06ID:6oY+Vq0l
まあ海外の方が評価してる人多そうだけどな。
Xamarinのミゲルもお気に入りらしいし。
0652デフォルトの名無しさん
垢版 |
2015/03/09(月) 17:03:51.87ID:9kRgY548
お題スレみたけどlet文がずらっとあると見る気しないな
スクリプト的なの向いてないんか
慣れかな
0653デフォルトの名無しさん
垢版 |
2015/03/10(火) 00:11:20.87ID:eoBVzNTP
F#も10年くらいたつと思うけど
これから来る!とかだんだん使われてきてる!、
とか言われてることが当時と同じなんだよなw
まあ生き残ってるだけでも褒めてやるべきか
0660デフォルトの名無しさん
垢版 |
2015/05/11(月) 04:52:54.35ID:ucrKLq5f
最初誤ってF#のランタイムをインストールしてしまいましたが
さんざんググった末に無事>>5にもある実行環境CTPをインストールできました
始めから2chのこのF#スレを見つけ出していればもっとすんなりことが運んだだろうにオバカでした
0663デフォルトの名無しさん
垢版 |
2015/07/10(金) 20:52:21.69ID:EYw+GKz1
2015/07/06(月) 開場:19:57 開演:20:00
この番組は2015/07/06(月) 21:19に終了いたしました。
来場者数:526人 コメント数:208

意外と多いなw地道に(20)も開催してるからか
0665デフォルトの名無しさん
垢版 |
2015/09/24(木) 01:04:54.51ID:a1kb4fMZ
いや海外のコミュニティ盛んだしXamarinも力入れてるし、メジャーの次のグループの中では人気ある方だと思うが
0666デフォルトの名無しさん
垢版 |
2015/09/24(木) 10:00:36.92ID:TyqNOL17
あまり使い方の説明がないが、atomエディタ、yeomanのF# プロジェクト作成ツールを利用したクロスプラットフォームの開発環境
http://ionide.io/
xamarin studio/mono developでいいかなとおもってしまうが、コマンドラインツールはプラグインや設定みたいなのが作りやすい面はあるのかな。

ここで紹介されてるpaketというパッケージマネージャーだと、nuget以外にgithubからも直接持ってこれるらしい。
http://fsprojects.github.io/Paket/
0667デフォルトの名無しさん
垢版 |
2015/09/30(水) 13:41:01.14ID:3+jw6dgd
初心者にはわからんと思って、海外では盛んアピールしたがる奴がいるが
さびれてるのは海外でも同じ
Xamarinが推奨してるのもC#だし
結局.net=F#であり、monoでlinuxやmacで使おうなんて人いない
0669デフォルトの名無しさん
垢版 |
2015/09/30(水) 13:45:23.64ID:3+jw6dgd
海外では人気は嘘です!!!!
むしろ日本のほうが本もいっぱい出てて人気ある
>>664
サイトより本買ったほうがいい
ただブロガーは>>>649みたいにけんか売ってくる奴ばっかりだから気をつけよう
0671デフォルトの名無しさん
垢版 |
2015/09/30(水) 13:51:48.53ID:3+jw6dgd
>>581>>562>>583
こういう時にだけでてくるカスのせいで過疎った
0675デフォルトの名無しさん
垢版 |
2015/09/30(水) 14:29:17.59ID:mF2CNPGJ
キモイ人ががが
0679デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:39:05.26ID:5FYO2fZ9
>>365>>369
だいたいこいつらのせい
反省したか?
0680デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:42:24.77ID:5FYO2fZ9
>>675
おまえまだいたの?
F#スレでどうしてもキモイがどうとか話題にしたいのか
みんな迷惑してるがな
あとキモイ
0681デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:43:19.73ID:5FYO2fZ9
>>675
わざわざこのスレに書き込むためにID変えてるとかキモい
0682デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:44:09.65ID:5FYO2fZ9
>>676
勝手に参加すればいいんじゃない?
どうぞどうぞ
0683デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:45:13.25ID:5FYO2fZ9
>>677
何が2冊しかないのか意味不明
勝手に笑ってろ
0687デフォルトの名無しさん
垢版 |
2015/10/01(木) 22:57:44.87ID:PxnDQ6Dp
>>679
お前何と戦ってるのwww
0689デフォルトの名無しさん
垢版 |
2015/10/15(木) 04:53:24.26ID:i9gnKKPa
>>568
対話型インタプリターなら明らかに1,2を争う重さ
これをあたかも重くないとか無理ありすぎ
0690デフォルトの名無しさん
垢版 |
2015/10/15(木) 07:36:53.33ID:NdAXA3Ht
別に普通に動くしな
動画のエンコードでもさせるの?
0691デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:28:31.37ID:070VodXJ
>>688
それだけ話題がないだけなのに特定個人に責任をなすりつけるのは卑怯
ちゃんと荒らしてる奴叩けよ
0693デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:29:25.42ID:070VodXJ
>>687
お前こそ誰と戦ってんだよゴミ
0696デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:32:34.50ID:jR2HY8sf
>>690
動画のエンコードでもさせるのって全く話すり替えちゃってんじゃん
ちょっと頭おかしいんじゃないの?
0699デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:35:38.61ID:jR2HY8sf
>>690
対話型インタプリターなら明らかに1,2を争う重さ
って事実言ってるだけだろ
なんで認めないのかな
0700デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:37:41.51ID:jR2HY8sf
>>690
上げてまでこんなアホなこと書くなよ
お前みたいな奴のせいでF#が盛り上がらないんだろうが
0702デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:41:05.51ID:fKPw05Xd
真正とか意味の分からない煽りしかしてこないくせに
ちゃんとF#の話題振れるのが俺だけという情けなさ
これが現実
0703デフォルトの名無しさん
垢版 |
2015/10/15(木) 18:25:16.73ID:I20ULMb+
俺もIDEやクロスプラットフォームの話題出してるけど、誰も反応無いから安心しな!
0706デフォルトの名無しさん
垢版 |
2015/10/24(土) 00:17:31.88ID:OhO9p6/T
いやいや.netとelixirは、と思ったけど、ホットな話題を巡回してる人はだいぶ前に移ってelixierも試してるだろうというのはあるな。
0707デフォルトの名無しさん
垢版 |
2015/10/24(土) 00:25:41.20ID:y0a6t9gb
.NET抜きにしても F# 悪くない言語だと思うんだけどなあ。
OCamlほど冗長じゃないし。
0709デフォルトの名無しさん
垢版 |
2015/10/24(土) 12:18:26.97ID:niXzNvfm
おめおめ
0712デフォルトの名無しさん
垢版 |
2015/11/01(日) 09:18:28.60ID:CKqa9WWI
>>711
C#で書くよりF#で書く方がはるかに楽だぞ
XAML絡みとかテンプレートが足りないとか以外でF#使えるところは全部使ってる。
0713デフォルトの名無しさん
垢版 |
2015/11/07(土) 12:07:04.32ID:ptDOELGY
FParsecで簡単にパーサが書けたのは良かった。
が、400行程度のパーサをMonoDevelopで開こうとしてフリーズしたり、LINQ to EFを使おうとしてよくわからなくなったりなど、
F#の周囲の開発環境で挫折中。気力が沸いたらまた挑戦するかもしれん。
0716デフォルトの名無しさん
垢版 |
2015/12/01(火) 09:59:57.25ID:q7bUA74Z
入れてもらえないっていうかRoslyn作ってる奴が馬鹿だから言語中立な部分と特有な部分をごっちゃにしてるから迷惑してるって感じかと
.NET Nativeにしてもそうやね
0719デフォルトの名無しさん
垢版 |
2016/02/18(木) 02:36:02.75ID:qcoEpmKF
楽だ楽だと主張してる奴がいるのになんで盛り上がらないのか
答え:5人位が楽だと言ってるだけだから
0722デフォルトの名無しさん
垢版 |
2016/02/18(木) 12:08:42.28ID:m09s+2fy
>>718
同様なものをC#とF#で作って、F#の方がはるかに短いコードでバグも少なくできたって調べてる人海外で幾つか見るけどね

大体言語の好みなんてほぼ主観だと思うけど、主観では型をアッチコッチに書かなきゃいけないC#は本当クソだわ

F#実案件での使用で問題なく使えてるから流行ろうがどうでもいい。
海外ではまあ十分盛り上がってるみたいだしサポート切られる事もしばらくないだろ
0724デフォルトの名無しさん
垢版 |
2016/02/29(月) 07:18:33.41ID:1lOTNWnw
オプソニなってるからそこまで痛く無い
つーてもVSとかからサポートされなくなるとキツイんだが。
切ったらMSセンスねーなとは思う
0725デフォルトの名無しさん
垢版 |
2016/03/01(火) 20:07:37.96ID:GW+Y//Y5
良いものが流行らず消えてく何てことは数限りなくあった
F# は今頑張らないと消えると思う
0726デフォルトの名無しさん
垢版 |
2016/03/31(木) 20:11:09.32ID:EaHe9wWS
F#はこれから頑張るとかいう時期は終わってるでしょ
今あるのは一通り評価得た結果あって
一部の人は気に入った、ということでいいと思う
普及するのまだまだこれからだ!
なんていう寝言はさすがにやめてほしいが
0729デフォルトの名無しさん
垢版 |
2016/04/03(日) 13:58:40.61ID:SJ9U6W4k
求人してるのが海外の金融関連中心ってのもあるかもね。
暗黙的に統計か金融の知識が必要な気がする。
0730デフォルトの名無しさん
垢版 |
2016/04/06(水) 12:57:58.71ID:QwJxwviB
F#オンリーの案件はむしろ稀でしょ
F#がわかる=C#エキスパート+実務経験あり&並行化の知識あり
と遅延評価すると妥当になる
0731デフォルトの名無しさん
垢版 |
2016/05/01(日) 16:56:51.63ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
1t
0732デフォルトの名無しさん
垢版 |
2016/06/11(土) 17:16:42.35ID:ZtEjhTwV
F#勉強しはじめたばっかりですが、どなたか教えてください

Visual Studio 2015でF#プロジェクト作ってみたんですが、
「新規フォルダーの作成」のメニューがどこにも見当たらない
JavaとかC#とかでは、パッケージやnamespaceの階層に合わせてソースフォルダ掘ったりしますが、
F#ではそういうの無くて、ソースファイルはフラットに置いておくものなんでしょうか?
0733デフォルトの名無しさん
垢版 |
2016/06/11(土) 17:30:27.31ID:zSGsCTOB
>>732
extentionでF# Power Toolsというのを落とせばその機能が使える。
0741デフォルトの名無しさん
垢版 |
2016/08/30(火) 20:42:10.14ID:vrBeNxH6
間違いの無い記事は少ない
間違いを見つけ乍ら読むのがリテラシー
0743デフォルトの名無しさん
垢版 |
2016/09/02(金) 06:36:24.81ID:93bhRaHZ
どこに採用されてる?
0745デフォルトの名無しさん
垢版 |
2016/10/09(日) 13:09:22.51ID:7SKhoL6o
.netにバインドするライブラリってのは
たとえばデリゲートをどうすんのかとか
属性どうするのかとかですぐつまづいてしまう
JScript.NETやIronPythonがまさにそうだ
F#はそのへん良く頑張ってるな
0747デフォルトの名無しさん
垢版 |
2016/11/15(火) 16:44:14.09ID:G5nfQU/Z
質問させてください
F#をC#と併せて勉強中です。C#の場合、高階関数に渡すラムダ式の中で
以下のように配列のインデックスを使えるのですが、F#だとどう書けばよいか分かりません
F#のラムダ式中で配列のインデックスを使う方法があればお教え願います

(C#)
var array1 = new[] { 12, 33, 46, 8, 23, 42, 41};
var array2 = array1.Where((x, index) => index % 2 == 0).ToArray(); // array1の偶数番目のみの配列を新たにつくる

(F#)
let array2 = Array.filter (fun x index -> index % 2 = 0) array1 // こうはできない
0748デフォルトの名無しさん
垢版 |
2016/11/15(火) 17:51:26.35ID:Z1GMtli2
ちょっと長ったらしくて、もっとスマートなやり方があるかもしれんが
とりあえずは、こうすればできる

Array.mapi (fun index x -> (index, x)) array1 |>
Array.filter (fun (index, x) -> index % 2 = 0) |>
Array.map (fun (index, x) -> x)
0749デフォルトの名無しさん
垢版 |
2016/11/15(火) 18:46:06.01ID:G5nfQU/Z
>>748
なるほど、mapiだとインデックスが使えるんですね
そこで一旦indexを要素にもったタプルの配列をつくると
勉強になりました
0750デフォルトの名無しさん
垢版 |
2016/11/15(火) 20:50:47.44ID:OT10uw27
filterとmap重ねるならchoose使え
0752デフォルトの名無しさん
垢版 |
2016/11/16(水) 18:51:58.42ID:URMKBQmU
>>750-751
ありがとうございます
スマートに書けるようになりました

Array.indexed array1 |> Array.choose (fun (index, x) -> if index % 2 = 0 then Some x else None)
0754デフォルトの名無しさん
垢版 |
2016/11/16(水) 19:33:48.20ID:URMKBQmU
>>753
わざわざありがとうございます
こういうyieldを使った書き方はまだ詳しく勉強してないんですが、
こっちだと中間のデータをつくらないんでパフォーマンスがよさそうですね
勉強して試してみます
0755デフォルトの名無しさん
垢版 |
2016/12/13(火) 03:00:30.70ID:1DM7j7BI
F#って普通に個人で趣味アプリ作ったりする場合でもC#と比べて恩恵感じられる?
関数型って算術演算や金融関係で威力を発揮するけどそれ以外だと却って手間が増えるだけみたいなイメージある
0757デフォルトの名無しさん
垢版 |
2016/12/13(火) 09:05:12.17ID:/Iv3sNJB
>>755
C#に比べてVSのサポートがイマイチって所が多々あるけれど、それを補ってかつはるかに上回るメリット得られるお。
正直C#でなんかサポートが足りない所、たとえばUI周りとか以外で使いたくないしF#使える所は全部F#で書いてる。
0761デフォルトの名無しさん
垢版 |
2016/12/13(火) 19:01:53.31ID:QZ8rc8DA
>>760
やってみて損はないと思いますー
実案件で使えなくても考え方学ぶことでC#での書き方も良くなると思うし、実案件でも人の問題とかなければ使える場面は多々あると思う。
0763デフォルトの名無しさん
垢版 |
2016/12/27(火) 16:04:36.71ID:r8OAYz75
勉強し始めたけど、いつなくなるのか心配
MSって、切るときはバッサリ行くよな
0764デフォルトの名無しさん
垢版 |
2016/12/27(火) 16:22:15.15ID:ov9/Tp6R
もうとっくにイってます
0765デフォルトの名無しさん
垢版 |
2017/01/16(月) 12:32:54.03ID:w3fpx7c2
F#デビューしようと思って本探してるんだがC#er向けの本ってないのな
ググるとサイトはいっぱい出てくるけど
こういう場合は関数型言語について書かれた本をとりあえず買っとけばいいのかな
0766デフォルトの名無しさん
垢版 |
2017/01/16(月) 13:40:50.81ID:of8fDlu0
Real World Functional Programming: With Examples in F# and C#
かな。たしか英語の原書しかないけど
でもまずプログラミングF#読んだ方がいいと思う
0767デフォルトの名無しさん
垢版 |
2017/01/16(月) 14:05:39.31ID:cZ5PGvSb
俺は実践F#関数型プログラミング入門って本で勉強したけど、なかなか良い本だったよ
書き方が平易な感じでサクサク進められて、基礎的な部分は一通りキッチリ習得できたと思う
0768デフォルトの名無しさん
垢版 |
2017/01/16(月) 16:56:59.00ID:rgwnOlnx
勉強中で悪いんだけど

実践F#関数型プログラミング入門は確かにとっつきやすいんだけど
説明不足と思われるところが散見されるように思う
かといってプログラミングF#で十分ってわけではないんだけど

例えば、今アクティブパターン見てるんだけど、いまいち動作がわかんねー
分類としての役割と、型変換の役割があるみたいだけど、
その内部動作っというか、統一的にどのように動作してるのかがわからん
0769デフォルトの名無しさん
垢版 |
2017/01/16(月) 21:42:59.51ID:meiXzXMj
実装は関数呼び出しの条件一致だろうけど、使うぶんにはそのパターンになるかどうかって感じでよくないか?
パラメータわたしのやつは順序がおかしくて分かりづらいと思うが
0770デフォルトの名無しさん
垢版 |
2017/01/16(月) 21:44:10.62ID:meiXzXMj
>>766
俺もその本で関数型学んだ
モッナードとかは無いけどオブジェ脳の人が感触をつかむのには良いよね
0771デフォルトの名無しさん
垢版 |
2017/01/17(火) 12:28:38.43ID:8zwXc9tZ
>>769
以下の=ソース=において、 | FIleExtension ".jpg"はどう動作すると考える?
プログラミングF#には記述があるからわかるけど
普通に ".jpg"はFIleExtensionの引数にしか見えない

疑問点1 match式の|の後はパターンの記述だけど、関数呼び出しの場合の約束事が不明
疑問点2  | FIleExtension ext は.jpgの方とほぼ同じ記述だけど、こちらは代入
       さしあたって、切り分けできるのかな? 出来たとしても、わかりずらいし。

=========== ソース ============

let (|FIleExtension|) filepath=Path.GetExtension(filePath)

let determinFIleType(filepath :string)
match filepath with
| FIleExtension ".jpg"->printfn "画像"
| FIleExtension ext->printfn "未知 [%s]" ext
0772711
垢版 |
2017/01/17(火) 12:30:49.29ID:8zwXc9tZ
あれ?空白が無視されてるな

match式以降はブロック別で、ずれてますので、
まぁわかりますよね
0773デフォルトの名無しさん
垢版 |
2017/01/17(火) 15:40:46.37ID:AtzKNi4C
|の後は元の値がこのパターンに合うか?って感じの比較対象が来るのでFileExtension ".jpg"と言う値って感じに掴んでる。
正規表現の奴はそのregexを元にほにゃららを返す値って感じ。
けどほんとはパターンを区別するって言うセレクターとした方がいいのかな?
0774デフォルトの名無しさん
垢版 |
2017/01/17(火) 16:21:52.44ID:8zwXc9tZ
たぶん違う

| FIleExtension ".jpg"->printfn "画像"の方は、
FIleExtensionの引数がfilepathで、その結果が".jpg"とマッチするかどうか

| FIleExtension ext->printfn "未知 [%s]" extの方は
FIleExtensionの引数がfilepathで、その結果をextに代入(let束縛?)

って、ことみたい(プログラミングF#に記述の例で上のように解釈するような説明あり)
実践F#にも同様な例(P295)はあるけど、こちらは、説明なし
0775デフォルトの名無しさん
垢版 |
2017/01/17(火) 16:57:47.21ID:AtzKNi4C
いや俺はそう言う風な理解をしてるって話なんだが。
実体は上から順番に関数呼び出しの条件マッチだと思うが動作の仕組みを知りたいんだったらILを見れば。
0776デフォルトの名無しさん
垢版 |
2017/01/17(火) 17:34:24.12ID:8zwXc9tZ
>ILを見れば。
たしかにね。いままで避けてきたから、考え付かなかった。

ただ、実践F#の方はなんの説明もないんだよ
それで理解できるわけないってーの
(| FIleExtension ".jpg" なら、FileExtensionの引数は”.jpg”でその結果が、filepathとマッチが
普通の理解だと思う)

多分、F#の文法理解のキモは、実践F#のどっかに書かれてた、
”let束縛や関数束縛にはパターンマッチが宿る”ってのがあって

それは何ぞやってことかなとも思うんだけど 
0779デフォルトの名無しさん
垢版 |
2017/01/29(日) 11:32:18.42ID:85P/1kIo
Xamarinでも使えると聞きたけど、実際に実用に耐えるレベルで使える感じ?
それともまだちょいきびしい?
0781デフォルトの名無しさん
垢版 |
2017/01/29(日) 16:36:43.65ID:SZxfjGEN
>>777>>779
勘違いしちゃいけないのは
成長中とかじゃなくてとっくに成熟してる分野だからな
一部の人が持ち上げてるだけで一般的にはそうでもないだけ
0784デフォルトの名無しさん
垢版 |
2017/01/29(日) 22:48:48.26ID:fQuWVzYo
>>779
使えるし実案件で使ってる。
全部F#とかはやりにくいところもあると思うけど可能。
ロジックをF#でとかは普通に可能。
ただしDLLの参照はプロジェクトファイル直で編集しないとダメかも
0786デフォルトの名無しさん
垢版 |
2017/01/30(月) 08:55:41.75ID:HBz5xnGW
f#はmonoで動くように作ってるので問題無いが、
あとはC#と同じくiosの制限に引っかからないかぐらいかな。
動的コード減らすように、ios向けにコンパイラ改良してるみたいではあるが。
0788デフォルトの名無しさん
垢版 |
2017/02/24(金) 21:55:29.29ID:VHgIchSB
軽量構文では前方参照できてもよくない?
というか前方参照できないのがVSに統合してるのに広がらない大きな理由のような
0791デフォルトの名無しさん
垢版 |
2017/02/27(月) 22:45:13.58ID:C8vMoSWL
immutableでもちゃんと書けるんだすごーい→しばらくして
現実に引き戻されちゃうold Cですら前方宣言あったよね?と
0792デフォルトの名無しさん
垢版 |
2017/02/27(月) 22:52:50.08ID:x8Zfjmi0
むしろ適度に参照制限されてた方がいい。ミュータブルよりイミュータブルが利点を持つのと一緒
0793デフォルトの名無しさん
垢版 |
2017/03/01(水) 22:42:04.78ID:G3+Z4HPe
(O抜きの)CAML当時のPCでは関数型言語のコンパイラで前方参照なんてやってたら
まるで使い物にならなかっただけの流れだとなんとなく思う
0794デフォルトの名無しさん
垢版 |
2017/03/02(木) 17:03:36.98ID:7GIcFobN
前方参照やりだすと型推論が面倒くさいことになりそうな気がする
トップレベルの定義は型注釈必須になっちゃったりするんじゃね
0795デフォルトの名無しさん
垢版 |
2017/03/03(金) 00:27:09.47ID:0HpXceRa
F# 4.1 未満でも↓のように関数の前方参照ができるし、前方参照に比べて余分な型注釈が必要になることもない
 let rec f1 () = f2 "" + f3 1
 and f2 s = s.Length
 and f3 x = x
むしろ f2 のように型推論が強化される場合もある
0796デフォルトの名無しさん
垢版 |
2017/03/03(金) 01:21:41.94ID:EBp4jZQp
多分、今話題に上がってる前方参照って、同一のlet式内って狭い範囲の話じゃないと思うよ・・・
0797デフォルトの名無しさん
垢版 |
2017/03/03(金) 02:47:10.16ID:GTe30Tvn
前方参照できないとトップダウンでは書けないよね
上から下にいくにつれて詳細化するほうが読みやすい
0799デフォルトの名無しさん
垢版 |
2017/03/03(金) 20:42:40.44ID:BaUfKJHp
>>798
わかるよ!
0800デフォルトの名無しさん
垢版 |
2017/03/03(金) 22:41:27.26ID:Q3zcIHzi
おれもわからん
0801デフォルトの名無しさん
垢版 |
2017/03/03(金) 23:04:52.74ID:xbhGesOG
上から下にかけて詳細化って何。
インターフェース定義とその具体的実装的なことでも言ってんの?
0802デフォルトの名無しさん
垢版 |
2017/03/03(金) 23:27:50.49ID:BaUfKJHp
>>800
わかるよ!
0803デフォルトの名無しさん
垢版 |
2017/03/04(土) 00:32:28.38ID:/imazuHh
>>802
わからんいうてる奴に「わかるよ!」ってなんやねん
ガイジか死ね氏ねウンコアヘアヘ仮面
0804デフォルトの名無しさん
垢版 |
2017/03/04(土) 12:38:53.96ID:GRvQ2lmz
急に延びてると思ったら
またいつものあれか
0806805
垢版 |
2017/03/06(月) 23:37:58.97ID:f18Wvt72
guard的なものを作りたい
0808デフォルトの名無しさん
垢版 |
2017/03/08(水) 16:50:08.16ID:jMX+hATM
まだ保守されてたんだな
0810デフォルトの名無しさん
垢版 |
2017/03/19(日) 13:32:32.34ID:UkA4tC4+
>>804
数ヶ月書き込みがない過疎スレで「いつものあれ」とか無理あるだろ
あらクソスレにずっといついてるいつものあれでしたか
0811デフォルトの名無しさん
垢版 |
2017/04/15(土) 20:49:04.54ID:TK0/vAtg
質問です

let add x y = x+y

を用いた関数合成した場合

■関数定義成功
1.let ft = add 10>> add

■関数定義失敗
2.let ft = add >> add
3.let ft = add >> add 10

2.、3.が失敗する理由は何でしょうか?
0812デフォルトの名無しさん
垢版 |
2017/04/15(土) 21:07:11.49ID:PugiXhCo
FSharpFuncが+演算子のオーバーロードを持ってないからだろ
0813デフォルトの名無しさん
垢版 |
2017/04/15(土) 22:13:15.85ID:TK0/vAtg
>>812
let add x y = x+y を let add x y = 0
にしてみたんだけど、やっぱだめでした。

エラーは以下。
エラーの見方がよくわかんないんですけど、
これ見ると、>>の左側のaddは一引数を求めると考えていいんですよね?

> let test = add>>add;;
let test = add>>add;;
----------------^^^

stdin(13,17): error FS0001: 型が一致しません。
'(int -> int) -> 'a'
という指定が必要ですが、
'int -> int -> int'
が指定されました。型 'int -> int' は型 'int' と一致しません
0814デフォルトの名無しさん
垢版 |
2017/04/15(土) 23:41:37.70ID:PugiXhCo
>> オペレータのシグネチャ見てみ。
>>は('a->'b)->('b->'c)->('a->'c)となってる。つまり('a->'b)の関数と('b->'c)の関数を受け取って('a->'c)を返す。
ここでaddを見るとint->int->intなのでこれはまたint->(int->int)でもある。
つまりintを受け取ってint->intを返す。
ここで'a->'bに当てはめると'aがint、'bがint->intとなる。
そうすると>>の右の値は(int->int)->'cでなければならない。
けれどaddを渡していてそれはint->int->intであって(int->int)->intではない。
0815デフォルトの名無しさん
垢版 |
2017/04/16(日) 00:13:53.65ID:NYnhF7Pd
>>814
Thx 大枠理解しました。

>ここでaddを見るとint->int->intなのでこれはまたint->(int->int)でもある。
特にこの見方は非常に参考になります。

多分今回の件きちんと理解すると、
自分の中でごっちゃになってる部分が結構すっきりすると思います
ここから先は、調べてみます
ありがとうございました
0816デフォルトの名無しさん
垢版 |
2017/05/06(土) 19:25:54.59ID:2H+eGUwc
X Y Z Nとスペースで区切られた文字列が標準入力から入力された時、
Console.ReadLine().Split [|' '|]を、一つのletでint X Y Z Nそれぞれに入れるのには
どうしたらいいでしょうか?
0819デフォルトの名無しさん
垢版 |
2017/05/06(土) 22:30:58.28ID:IkyXTWA8
>>816
let [|X;Y;Z;N|]=...
0820デフォルトの名無しさん
垢版 |
2017/05/07(日) 01:04:25.17ID:2BTsLj3O
>>819
ありがとうございます。

それ前に一回試してみてて、「試してみたけどマッチ不完全って出てムリでしたよ」書こうとして、
もう一回試してみたら、ちゃんとコンパイルできました。

何を言っているかわからないと思いますが、エラーは他の所だったんだなぁと。
0821デフォルトの名無しさん
垢版 |
2017/05/07(日) 04:37:20.17ID:Q0T7PduY
競プロでもやってんのか
0822デフォルトの名無しさん
垢版 |
2017/05/07(日) 07:56:21.67ID:nWdzBJ3w
>>820
ワーニングは出るけどコンパイルは出来るはず。
それもエラーになるような設定ってできるのかな。
けどおかしな文字列与えたら実行時にすっ飛ぶから、ほんとはlet じゃなくmatch使うべき。
0823デフォルトの名無しさん
垢版 |
2017/05/07(日) 14:03:57.99ID:2BTsLj3O
>>822
match憶えました。

>>821
PAIZAのPOH7でF#が使えるのでやってみました。F#歴3日くらいです。
とりあえず全部解けたけど、ちゃんとした本を読んだ方がいいんだろうなぁ……
0824デフォルトの名無しさん
垢版 |
2017/05/08(月) 23:05:02.96ID:9wTmIyqX
こないだの炎上()の件で知名度あがったのかパイザ
0825デフォルトの名無しさん
垢版 |
2017/05/09(火) 08:36:20.20ID:sNZE435L
あの程度の炎上でサービス使えなくなってたらなんも使えんで
アレは炎上大好き民族のはてな民のデイリーノルマみたいなもんや
0827デフォルトの名無しさん
垢版 |
2017/05/10(水) 00:38:28.85ID:/qtBCH3O
AtCoderやyukicoderでも良さそうけどな
0829デフォルトの名無しさん
垢版 |
2017/05/16(火) 03:37:55.78ID:e1kn8e20
match Array.countBy (fun x -> x = i + 1) array with
| [|(false, f); (true, t)|] -> t
| [|(true, t); (false,f)|] -> t
| [|(true,t)|] -> t
| [|(false,f)|] -> 0

というのは正しいのですか?ケースが増えるにしたがって、めっちゃ増えちゃう気がするんだけど、
ループとか関数で処理することはできないんでしょうか。
0830デフォルトの名無しさん
垢版 |
2017/05/16(火) 07:10:14.68ID:DHMah8vu
それフィルターじゃダメなの、
0831デフォルトの名無しさん
垢版 |
2017/05/16(火) 10:39:32.85ID:zhIbn0v9
>>829
マッチ式の練習って意味ならこうかな
match Array.countBy (fun x -> x = i + 1) array with
| [| _ ; (true, count)|] | [| (true, count) ; _ |] -> count
| _ -> 0

関数で探すならこんな感じか
array
|> Array.countBy (fun x -> x = i + 1)
|> Array.find (fun (x, count) -> x = true)
|> snd

単に条件マッチする要素数を数えたいだけなら
Array.filter(fun x -> x = i + 1) array |> Array.length

またはこう書いたり
Array.sumBy (fun x -> if x = i + 1 then 1 else 0) array

自分も勉強中だからもっといい書き方があるかもしれない
0832デフォルトの名無しさん
垢版 |
2017/05/16(火) 12:20:07.62ID:e1kn8e20
>>830>>831
ありがとうございます。
ワイルドカードを使う、関数でフィルターする、ラムダ式を工夫する、どれも参考になります。
10日くらいやって、F#を本格的にやる覚悟ができてきたので本予約してきました。

でもまだ、典型的なループにbreakがないのには慣れないなー……
0833デフォルトの名無しさん
垢版 |
2017/05/16(火) 13:54:00.84ID:063aFbk0
ループで分岐を行うという事に疑問を抱くところまで洗脳しましょう
0834デフォルトの名無しさん
垢版 |
2017/05/16(火) 13:57:34.27ID:ARwha8IE
世界トップクラスのプログラマだけど質問ある?
まあねーかw
最近の日本人はたるんでねーか?
まあこんなしょぼいところに俺レベルのプログラマなんているわけねーよなwwwwwwww
0835デフォルトの名無しさん
垢版 |
2017/05/16(火) 15:06:44.92ID:063aFbk0
トップクラスは仕事で何やってんのかとF#で型クラスを導入するには今のCLR上のどこに問題があるのか教えてくれ。
0837デフォルトの名無しさん
垢版 |
2017/05/23(火) 03:59:59.51ID:l7rPL62D
自分も心待ちにしてる。
なんか遠く無いうちに8.1ストアアプリとかディスコンになりそうだしその前に使えるようにしてくれないと困るわ
0838デフォルトの名無しさん
垢版 |
2017/05/25(木) 01:38:45.30ID:rKV7x64q
Console.ReadLine() |> intを何度も書くのが面倒で、

let CRI () =
Console.ReadLine() |> int

let m = CRI
let n = m + 1

としても、mがintではなくunit->intになってしまって上手くいきません。どうしたらいいんでしょうか。
0839デフォルトの名無しさん
垢版 |
2017/05/25(木) 02:11:45.60ID:V+ZR7ZsZ
>>838
CRIの型はunit->int
つまり () をうけとってint型を返す関数

let m = CRI () ってすればいい

let m = CRI とするとmがCRIって関数のコピーになるから
let n = m () + 1 としてもいい
0840デフォルトの名無しさん
垢版 |
2017/05/25(木) 12:41:52.55ID:rKV7x64q
let CRI () = の()は、引数を取らない関数という意味じゃなくて、()を引数として
取る関数という意味だったんですね。
mが関数のコピーになってしまっていることは何となくわかっていましたが、
どうしたらいいかわかりませんでした。

色々まとめて関数化する入口になりました。ありがとうございます。
0841デフォルトの名無しさん
垢版 |
2017/05/30(火) 17:43:28.11ID:MdPNaTW3
C#でwinフォームのフォント変えてた時には意識してなかったけど
F#におこられてMSDN見たら
public Font(
FontFamily family,
float emSize
)
あれfloatだったんかw
0843デフォルトの名無しさん
垢版 |
2017/06/01(木) 01:32:04.81ID:/og4bwsZ
最初のエラーメッセージ一つつぶしてはリコンパイルしてまた怒られる繰り返しで
エラーも警告も全部潰し終わればだいたい思った通り動くものができてて
ある意味楽だよね
0844デフォルトの名無しさん
垢版 |
2017/06/01(木) 12:14:48.83ID:o/dQD8LP
何と比べたんだ
0845デフォルトの名無しさん
垢版 |
2017/06/01(木) 14:06:13.61ID:55CngytM
C#とかだろ
まあ自分もコンパイル通ったら思い通りに動いたってのは何度も経験した
0846デフォルトの名無しさん
垢版 |
2017/06/01(木) 22:41:41.77ID:+IsXJy5u
コンパイル通ったら思い通りに動いたって経験ないので設計力が俺にない
0847デフォルトの名無しさん
垢版 |
2017/06/03(土) 18:00:27.61ID:X9cB+hGR
まー漏れはGUIデバッグ用おまじないとして
let msgbox s = MessageBox.Show( s ) |> ignore
なんてのを毎回コピペしてるんだけどねw
0848デフォルトの名無しさん
垢版 |
2017/06/04(日) 01:15:20.63ID:cMzio+d2
「ゆるふわ」な展開だよな
oO(だってデバッグでコンパイル警告増やしてる場合じゃないもん
  ということで>>847をそっとクリップボードに入れたとかは言えない)
0849デフォルトの名無しさん
垢版 |
2017/06/04(日) 17:19:25.85ID:schaDAVw
ビルドツール2015が落とせなくなってると思ったら
最新のビルドツール(現在は2017)だけ無償提供するけど
過去のはMSDNサブスクリプション限定になったんかよ
0850デフォルトの名無しさん
垢版 |
2017/06/04(日) 20:22:54.65ID:Gh2GPGm+
なんでそんなめんどくさいことしてんの
0851デフォルトの名無しさん
垢版 |
2017/06/06(火) 02:33:04.78ID:sboLfrRP
環境作っちゃったからwそれに趣味だし
もし他人から環境作り聞かれることがあったらVSすすめるけど(質問攻めやだし)
0852デフォルトの名無しさん
垢版 |
2017/07/23(日) 00:57:49.83ID:M/QiPu/m
ファイルにクラスとかコレクションの値を書き込んだ後に、それを読み込むのに、
一般的な方法ってありませんか?

type Point = {mutable x : int; mutable y : int}
こういう定義があって、今はアドホックでこんな感じに書いてます。
0,0;0,1;0,2;0,3;0,4;0,5;
0,1;1,1;2,1;3,1;4,1;5,1;
これをSplitでString[]にして、
static member fromCSV(s:string) =
match s.Split[|','|] with
| [|a;b|] -> {x = int a; y = int b}
で読んでます。ダサいです。

このtype自体にはこだわりがないので、
[|[|0;1|];[|0;2|];[|0;3|];[|0;4|];[|0;5|]|]
[|[|1;0|];[|2;0|];[|3;0|];[|4;0|];[|5;0|]|]
みたいにデータ構造をそのままぱぱっと書き出して、ぱぱっと読める
みたいな方法はありませんでしょうか。
0857デフォルトの名無しさん
垢版 |
2017/09/03(日) 16:58:23.14ID:skndupQG
当社比
0858デフォルトの名無しさん
垢版 |
2017/09/16(土) 06:54:46.85ID:AcW1bn43
びっくりするほどF#の話題ないね

言語人気ランキングだと関数型の中では
Scalaについで上位なんだけど
0860デフォルトの名無しさん
垢版 |
2017/09/16(土) 17:42:17.40ID:1hHCSG56
言語のバージョンアップも大してないしな
まあ自分はコンピュテーション式の組み立てとかも適当にしかできないので猿でもわかるコンプ式とか誰か上げてくれ
0863デフォルトの名無しさん
垢版 |
2017/09/24(日) 16:06:41.16ID:vDIeG6fi
Scalaは言語として色々とんがってるから言語マニアを引きつけるのと、比較対象となるJAVAがアレなところが。
C#も色々アレなとこはあるけどモダンな言語機能も取り込んでるしJavaよりは遥かにマシだからな
0864デフォルトの名無しさん
垢版 |
2017/09/24(日) 17:59:58.12ID:ZoycLPfe
ScalaはJavaの後継を目指しているけど
F#はC#を補完する存在だから
Scalaほど話題にならないっていうのはあるかも
0865デフォルトの名無しさん
垢版 |
2017/09/25(月) 03:00:36.68ID:gDN5ioLV
F#の言語仕様にそんな大きな不満はないんだけど
やっぱScalaはJava陣営ってのが大きいだろうな
Androidがデファクトだから将来性がある
0869デフォルトの名無しさん
垢版 |
2017/10/06(金) 09:20:34.16ID:mKx5GyI5
それは設計思想的にないだろうし、自分はない方がいいかな
まあ気持ちはわかる
0870デフォルトの名無しさん
垢版 |
2017/10/21(土) 14:48:51.44ID:x6jw+qXc
VS2015でF#4.1にしたいんだがF#だけ更新するやり方わからん
VS2017にするのが一番速いのかね?
0874デフォルトの名無しさん
垢版 |
2017/10/24(火) 22:47:21.59ID:pt5mooPj
>>872
三笑亭可楽の名前の由来は
山椒は小粒でもピリリと辛い からきてるんだよ 豆な
ちなみに可楽は落語の始祖みたいな人
0875デフォルトの名無しさん
垢版 |
2017/10/26(木) 21:35:56.69ID:oDCnt1ox
>>870

Use F# on Windows | The F# Software Foundation
http://fsharp.org/use/windows/

Option 4: Install the free F# compiler and tools alone
のとこの
.Install the free F# 4.1 Compiler SDK from Microsoft
これ?
0877デフォルトの名無しさん
垢版 |
2017/12/22(金) 18:07:18.10ID:bOdX3AhV
どこにってそこにある
それほど減ってない
pythonが食ってるのはphperなんだろううけど
それだけじゃこんなに増えないから全体のπも大きくなってるんか
0878デフォルトの名無しさん
垢版 |
2018/01/03(水) 11:03:42.83ID:+3UF4y6J
勉強するのに適当なサンプルコードあるとこ知らない?
例えば↓みたいなのが見たい

・関数型の参考になる
・副作用のコード
  ファイルIO
  フォーム
・クラス
0879デフォルトの名無しさん
垢版 |
2018/01/03(水) 12:53:42.85ID:0CrAnLpT
>>2にある通りだがF# Snippetsもいいと思うよ
関数型で副作用とかモナド信者が飛んできそうだが、そこはF#だから問題ないさ
0881880
垢版 |
2018/01/03(水) 13:25:59.15ID:+3UF4y6J
間違えた 本当は>>879です
0882デフォルトの名無しさん
垢版 |
2018/01/08(月) 10:44:39.24ID:szpKYJOz
そもそもここの奴らどのバージョン使ってるかもわからん
普通に最新版使ってんの?
0883デフォルトの名無しさん
垢版 |
2018/01/08(月) 10:46:43.90ID:szpKYJOz
モナド信者が筋斗雲のように飛んで来るように
F#ってそんなに注目されてるのかね
0886デフォルトの名無しさん
垢版 |
2018/02/19(月) 10:01:13.69ID:p8AEqh0V
実践F# 関数型プログラミング入門 読んでると
リストに気合入ってるんだけど
リストってLIFOじゃないですか

リストのコレクションとしての意味とかループとしての意味は分かるんですけど
LIFOの性質をこれまであんま使った記憶が無くて
その意味合いが分かんないんですよ
自分の中ではFIFOの方が使い勝手よさそうなのに、
あえてLIFOで実装された理由というかメリットが知りたいッス
0887デフォルトの名無しさん
垢版 |
2018/02/19(月) 12:04:06.23ID:nacKNyKE
由来は知らんけど、追加は効率いいよね。
パターンマッチもいいかなと思ったけどそれは配列なら似たようなもんか。
0888デフォルトの名無しさん
垢版 |
2018/02/19(月) 12:15:27.34ID:SrM6uAzC
immutableなFIFOリストの実装が非効率的だからでは
FIFOを効率的に実装するためにはリスト末尾と先頭への参照を持つ必要があって
複数箇所から参照されてる場合にそれぞれを破壊的変更する必要がありそう
0889886
垢版 |
2018/02/19(月) 14:39:39.10ID:p8AEqh0V
事前に断っておくと、F#ではプログラミング初心者というか、つい先日からです

>>887 >>888
うん。なんとなくだけど実装上のメリットなら分からないでもないんだけど
結果として使いづらくなるのなら言語としてどうかなと

ちなみに、リストとかどういうケースで使ってますか?
やっぱ、あまり使わないですか?
0890デフォルトの名無しさん
垢版 |
2018/02/19(月) 14:55:29.81ID:L6jTtzQk
>>889
いや基本リスト使うけど。
中グルングルン回して何かする奴は配列の方が早いので必要な時は配列にする。
0891デフォルトの名無しさん
垢版 |
2018/02/19(月) 14:57:01.82ID:L6jTtzQk
コレクション、そも順序気にしないものも多いし。順序が必要な時は適宜rev入れたりして気を配ったりする必要はある。
0892デフォルトの名無しさん
垢版 |
2018/02/19(月) 15:22:05.36ID:p8AEqh0V
>>890 >>891
おおっ Thx

なんとなく、納得しました 差し当たって気にし過ぎたのかなw
やっぱ、最初のうちは とにかく書くだね
0893デフォルトの名無しさん
垢版 |
2018/03/02(金) 22:08:36.41ID:mYNfwuMl
>>886
自己レスなんだけど リストがLIFOの理由が分かった
結構単純な理由なんだけど

F#を含む関数型の場合、データー構造も再帰で表現できるんだけど
リストも再帰で表現されているため、LIFOにしか出来ない
マトリョーシカで例えると、最初のデータが一番小さいマトリョーシカしかで、
追加する度に大きなマトリョーシカに包含となる
結果として、データを取り出す際には大きなまとりょから取り出すことになり、LIFOにしかならないと

Haskellの本読んでて気づいた ちなみに、すごいH本読むと配列って記述無いんだよね
関数型と配列は相性が悪いらしい 不変じゃないしね 
Haskellの配列はモナドらしい さらにO(1)でないらしい 純粋だね〜
0895デフォルトの名無しさん
垢版 |
2018/03/04(日) 11:45:52.08ID:1R6Vs5gf
演算子の優先順位(↓の一番下にある)の見方なんだけど
https://msdn.microsoft.com/ja-jp/library/dd233228(v=vs.120).aspx

| (パイプ) は|>のこと
f x (関数適用) は関数fの引数の割り当て f 1+2は  (f 1)+2という意味
f(x) は.Netの関数の適用

でOKですか?
あと、関数の合成(>>)に関する規定が無いように見えるんですけど、どれに対応しますか?
0900デフォルトの名無しさん
垢版 |
2018/05/23(水) 20:50:11.72ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

C6RTQ
0904デフォルトの名無しさん
垢版 |
2018/06/27(水) 14:52:41.49ID:RqcpnlVd
>>893
Haskellの場合、リストを2つ使ってFIFOに変換する
1つはFIFOに変換したリスト もう一つは蓄えようのリスト

FIFOのデータが欲しかったら、蓄え用のリストからデータを順次取り出しFIFO用のリストに保存
FIFO用のリストを使い切ったら、また、蓄えようのリストからFIFOのリストに変換

つまり、裏(LIFO)の裏は表(FIFO) って使い方
0905デフォルトの名無しさん
垢版 |
2018/07/05(木) 01:03:00.33ID:RfoszcD2
14X
0913デフォルトの名無しさん
垢版 |
2018/08/19(日) 20:36:25.07ID:ySfp0A4e
さしあたって、MSがF#を忘れていなかったのがうれしいw

Haskell勉強中 now
0914デフォルトの名無しさん
垢版 |
2018/08/19(日) 20:53:38.44ID:coCwFxQi
Match!は地味にいいな
後将来的な予定の匿名レコードはC#の匿名クラス的な使い方でそれがメソッド内超えて使えるようになる感じか?
0916デフォルトの名無しさん
垢版 |
2018/09/26(水) 12:04:36.29ID:kWlYqESN
忘れてないだけなのに小成功w
0919デフォルトの名無しさん
垢版 |
2019/01/18(金) 04:12:05.97ID:6U5tZjv3
scalaのスレもうないのかω
0921デフォルトの名無しさん
垢版 |
2019/01/18(金) 15:37:52.09ID:mkL07vHv
scalaが思ったより早く廃れたのはそれこそjavaの混乱のせいか
いやもっと前?
F#はなんだかんでMSが見捨ててないからな〜
0922デフォルトの名無しさん
垢版 |
2019/01/18(金) 15:42:40.48ID:tGJC1q7w
wrapperな時点で負け
0924デフォルトの名無しさん
垢版 |
2019/01/18(金) 19:31:06.14ID:wcIBYenX
Scalaの方がユーザーは多そうなのに
0925デフォルトの名無しさん
垢版 |
2019/01/22(火) 19:29:00.13ID:Rmc/4N6W
Scalaは流行り廃り激しいWeb系としてもてはやされたから急におとなしくなった感はある
今は固定層だけ使ってるんじゃね
F#は特に流行ってないから廃れた感じもないw
0926デフォルトの名無しさん
垢版 |
2019/01/22(火) 20:28:14.94ID:6RrYW1UH
俺は、Haskellずーーーーと勉強してる
一見わかりやすそうな文法なんだけど、難しいな これ
ただ、知識欲は満たされる
0928デフォルトの名無しさん
垢版 |
2019/01/24(木) 11:11:58.11ID:Y31ePpdj
こないだ見くびられてる言語5つに入ってたな
0930デフォルトの名無しさん
垢版 |
2019/01/26(土) 21:42:56.42ID:+eApZUOf
正直C#に公式でOptionとEitherと末尾再帰最適化と諸々のイミュータブルなデータ構造周りを入れてくれればもうそれでいいや
0931デフォルトの名無しさん
垢版 |
2019/01/26(土) 23:53:52.86ID:V+pxBIbs
型推論つかない限りC#クソって言い続けるわ
0933デフォルトの名無しさん
垢版 |
2019/01/27(日) 00:47:38.92ID:eERlvW+o
ほんそれ
テイルコールはいいから、せめてネスト型数の制限だけなんとかなってくれればなぁ
0935デフォルトの名無しさん
垢版 |
2019/02/02(土) 12:45:41.79ID:5KhxZqJM
言語進化ペースも遅いからな
けど今度の匿名レコード型は期待してる
0941デフォルトの名無しさん
垢版 |
2019/02/12(火) 03:21:13.66ID:SG0QUiA8
ぐぐるとブログの先生方のありがたい記事はアウトデイト過ぎて
qiitaに負けとる…
0943デフォルトの名無しさん
垢版 |
2019/03/05(火) 08:03:17.17ID:CS3QY3w6
いやそこになんでF#がいいか書いてるやんけ…
いろんな言語のいいとこ取り含め何が分からないんだ
0944デフォルトの名無しさん
垢版 |
2019/03/05(火) 10:44:15.42ID:HwCl8Q1J
exeゲロるんだっけ
0946デフォルトの名無しさん
垢版 |
2019/03/08(金) 22:22:16.47ID:AvJAJo7K
最初から見捨てられてたからそれよりはマシになった感じ
0947デフォルトの名無しさん
垢版 |
2019/03/09(土) 07:49:19.81ID:ZOfzHyh2
G♭の方がカッコイイ
0948デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:41:02.20ID:hURiHGZc
関数型言語が流行るときは果たして来るのかな?

2010年くらいまでは、cpuとgpuがまもなく統合されて、命令的でなく、宣言的にかける関数型言語でかくことでプログラムの並列化が自動的になされる時代が来るとかいう謳い文句をよく耳にした。

でも現実は関数型言語で並列プログラミングをしている人は少なくて、directx12とかvulkanの登場に象徴されるように、並列化したければ、寧ろもっと命令的でstate machineを操作するようなスタイルが主流になってしまった。
0949デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:54:03.50ID:ZwxIeQAv
いやDirectX とか引き合いに出されても、それが普通の並列のケースかいったらちがくね?
0950デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:54:13.93ID:hURiHGZc
コンピュテーション式を使って、async{}の内部では文を特別に解釈することで、簡単に非同期処理をすることができるというのはF#の優れた点だと思う。
けれど、AsyncなんかはC#とか色々な言語に取り込まれつつある。

折角頑張って本を読んで、F#を使ってはみたが、クラスを作らなくてよい、代数的演算ができるようになったC#という程度の使い方しかできない。

コンピュテーション式は俺には使いこなせる気がしない。プログラミング言語を使うことそれ自体が目的みたいな人なら使えるかもしれないが。このスレッドをざっと見てみたけれど、殆どのF#でコンピュテーション式とかそういう機能使う人いないんじゃないかな。
0951デフォルトの名無しさん
垢版 |
2019/03/23(土) 00:59:32.27ID:hURiHGZc
結局俺が言いたいのは、2010年くらいまでによく聞いた関数型言語の宣伝文句は大げさ過ぎだったということだ。
0952デフォルトの名無しさん
垢版 |
2019/03/23(土) 01:06:26.22ID:hURiHGZc
>>949
普通のケースではないけれど、当時はゲームエンジンの制作者までもが関数型言語に期待しているような記事があったんだよ。ゲームにまでも関数型言語か! これは関数型言語をやらざるを得ないな!って思ったことを覚えている。
https://game.watch.impress.co.jp/docs/20080911/epic.htm
0953デフォルトの名無しさん
垢版 |
2019/03/23(土) 01:21:43.24ID:ZwxIeQAv
よく分からないんだが、自分が使いこなせない?のかよく分からなかったという理由で誰も使ってないと思うのはなんなの?
WEBでもReactとかまさに関数型の考えでできてるしElmはピュアだし、いろんな言語に関数型の要素取り入れられてる
シェーダーとかまさに関数だし、ゆにていのECSとかオブジェクト指向で色々効率悪かったから値の配列を元に処理するぜって話だし、Rx系もいろんなところに移植されてる。
むしろ色んなところで関数型の考えで応用されてると思うけど。
0955デフォルトの名無しさん
垢版 |
2019/03/23(土) 04:56:56.13ID:abrpiqJH
>>948
・ユーザーは同じ操作をすれば同じ結果が返ってくるソフトを求めてる(ある種の参照透明性のあるソフトを求めてると言える)

・しかし手続き型言語は参照透明性が保たれない。

この時点で論理矛盾は有るんだけど、流行らないでしょうね。。。ー>関数型言語
0956デフォルトの名無しさん
垢版 |
2019/03/23(土) 05:05:32.95ID:abrpiqJH
>>952
覚えてますよー。
恐らく並列用のライブラリ充実で手続き型言語で良いやってなったんでしょうね。
シングルスレッドは手続き型言語優位ですし、並列ライブラリ揃えばパフォーマンスは手続き型言語に軍配上がりますから。
0957デフォルトの名無しさん
垢版 |
2019/03/23(土) 05:11:15.99ID:abrpiqJH
ちなみにHaskellは純粋関数型言語という事で並列に向くのではと思われましたが、純粋さの為に遅延評価だったのが災いしてます。
(遅延評価が並列動作を徹底的に邪魔をする)

実用的には金融系で採用されたOCamlのように純粋でない関数型言語の方が並列に向いているようです。
(並列プログラミングでよく名前の上がるErlangも純粋じゃないですよね)
0961デフォルトの名無しさん
垢版 |
2019/03/23(土) 14:19:44.65ID:ZwxIeQAv
Haskellが遅延デフォなのは副作用を外に持ってた関係?
その辺よく知らんけど純粋と遅延は一体じゃないでしょ
関数型はパフォーマンスではそりゃゴリゴリメモリ書き換えるやつの方が速いかも知れんが、そりゃメンテ性とか色々一切無視したあまりにも乱暴な議論じゃねーの。

重ねていうけどいろんな言語に関数型の概念は染み渡ってて、それで関数型が流行らないとか言われてもむしろすでに乗っ取られてはしませんかって感じしかしないわ。

そもそも関数型も手続き型も各々得手不得手あるんだからどっちが勝った負けたの話じゃない
0962デフォルトの名無しさん
垢版 |
2019/03/24(日) 22:48:09.05ID:cXiULMz0
質問です。2重ループ内で関数Fを呼び出して処理をしようとしているのですが、これをreduceなどを使って簡潔に表現する方法はありますか?

for i in seq1 do
for j in seq 2 do
F(i,j)
0963デフォルトの名無しさん
垢版 |
2019/03/24(日) 22:56:58.91ID:cXiULMz0
先ほどの訂正:
seq1は2次元のコレクションでseq1の各要素を引数にしてとある関数Fを呼び出すということをやりたい。


for i in seq1 do
for j in seq1.[i] do
F(seq1.[i].[j])
0964デフォルトの名無しさん
垢版 |
2019/03/25(月) 01:12:57.65ID:25q5twYk
Haskellしか知らんけど、関数型言語である以上似たようなものがあるはずなので。。。

1・main =print $ [map f (lst!!y) | y <- [0..length lst - 1]

lst = [[1,2,3],[4,5,6]]

f = (+1)

2・main =print $ map (map f) lst

lst = [[1,2,3],[4,5,6]]

f = (+1)
0965デフォルトの名無しさん
垢版 |
2019/03/25(月) 08:28:31.79ID:X7DYSSdE
>>963
seq1|>Seq.collect id|>Seq.iter F
のことでいいのかの?
0968デフォルトの名無しさん
垢版 |
2019/03/25(月) 13:16:59.54ID:kfX9OJI5
いやmapしたいのだったらそっちで正解かと
0969昨日質問したものです
垢版 |
2019/03/25(月) 22:24:43.80ID:8XT7Qy8P
>>964
Haskellなのでよくわからない部分もありますが、
map f (lst!!y)が1つ目のforループの代わりになって
(lst!!y) | y <- [0..length lst - 1]が2つ目のループの代わりになる感じだと理解しました。

>>965
Seq.collect idを使って2次元を1次元に並べ直すんですね。

ありがとうございました。関数型言語は難しいです。
私には、forループの方が分かり易く思えてしまうのですが、皆さんは副作用のない場面ではforよりcollectとかmapを使う感じですか?
0970デフォルトの名無しさん
垢版 |
2019/03/25(月) 22:50:11.46ID:X7DYSSdE
気分かなー
上からパイプライン演算子で繋がってない時はiterの代わりにfor使うことも
0971デフォルトの名無しさん
垢版 |
2019/03/25(月) 23:12:16.99ID:25q5twYk
>>969
うい。
Haskellのlst!!yは普通の言語のlst[y]に置き換えてくれれば。

リスト内包表記でも作れそうだと作ってみましたが、
普段インデックスなんて意識しなかったから、ちょっと悩みました。

最初、こう書いてみたら2次元から1次元になったので違うな。。。と。
(全部に適用するのは同じですが、リスト(配列)の構造(次元)が違ってしまう)

[f (lst!!y!!x) | x <- [0..(length.head) lst - 1], y <- [0..length lst - 1]]

結局map (map f) lstが一番簡潔でしたが。
0972デフォルトの名無しさん
垢版 |
2019/03/25(月) 23:18:05.28ID:4CvSxgZ7
F#良く知らないけど内包表記で
[ for xs in xss do
for x in xs -> f(x)]
みたく書けないん?
0973デフォルトの名無しさん
垢版 |
2019/03/25(月) 23:33:50.20ID:tiUbxLb+
>>970
変に関数型にこだわるより簡潔に書ける方を使うということですね。
0974デフォルトの名無しさん
垢版 |
2019/03/25(月) 23:44:59.82ID:tiUbxLb+
>>971
lst!!y!!xでコレクションの形を表してxやyに対しての操作を記述しているってことですか?
このような記述はF#でできるのかな。。。


>>972
質問の仕方が曖昧だったかな。リストを生成するのでなくて、コレクションの各要素に対して関数を適用して副作用を得るのが目的。で、それをforみたいなループを使わずに書けないかという質問でした。
0975デフォルトの名無しさん
垢版 |
2019/03/25(月) 23:55:50.61ID:25q5twYk
>>974
あんまり難しく考えなくて良いですよ^^;
リスト内包表記でxとyの全ての組み合わせが小さい順で出るので、それをインデックスに使ってるだけです。
F#にもあると思いますよ。

1次元になって良いなら、

(map f.concat) lst

が簡潔でしょう。

>>965-966 のcollect id がちょうどconcatと同じ事してます。
0976デフォルトの名無しさん
垢版 |
2019/03/25(月) 23:57:10.44ID:X7DYSSdE
>>974
オペレーター書けば出来るとおも
0978デフォルトの名無しさん
垢版 |
2019/06/18(火) 06:24:44.70ID:3nOE2mBA
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/

142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
0979デフォルトの名無しさん
垢版 |
2019/07/09(火) 22:26:17.25ID:kWuXjUR9
F#の公式リファレンス
たとえばList.splitAtが
左側のメニューにはあるけど一覧表のほうには無かったり
色々不備がある、コアライブラリの漏れの無い完全なリファレンスってどうやったら得られる?

https://msdn.microsoft.com/visualfsharpdocs/conceptual/collections.list-module-[fsharp]
0981デフォルトの名無しさん
垢版 |
2019/07/10(水) 07:48:30.66ID:EfQjHn3o
>>979
インテリセンス?
0982デフォルトの名無しさん
垢版 |
2019/07/10(水) 10:27:08.20ID:+uFplCdI
バージョンアップされたり
パッチ出るたびに
毎回ソース見直すのか
ご苦労さん
0983デフォルトの名無しさん
垢版 |
2019/07/10(水) 14:49:37.18ID:EZXNCWT9
>>982
公式ドキュメントの漏れや不備がないか心配って言ってるんだからそれしかないだろう
バージョンアップの度にソース見直すとかってのはお前が勝手に言いだしてることだから俺には意味がわからん
0984デフォルトの名無しさん
垢版 |
2019/07/13(土) 03:11:40.87ID:zvKgDhky
>>979
公式リファレンスがいろいろ不備があって不便、でよかった
どうやって得られるとか変に前向きな姿勢見せたからこのありさま
スキ見せたらあかんで!
0986デフォルトの名無しさん
垢版 |
2019/07/13(土) 08:18:43.51ID:P22ZcnQZ
まあはやってはないしな実際
C#なんかより遥かにマシなんだけどね
0988デフォルトの名無しさん
垢版 |
2019/08/06(火) 00:15:19.73ID:NYI2fH1q
言語としてまし
0990デフォルトの名無しさん
垢版 |
2019/08/19(月) 08:46:52.63ID:xlQPwL5+
C#とF#で「F#のほうがマシ」と言われる理由が分からん。
C#とF#が違う点って「書き方」だけだよね(どちらもCLIに落とされたら同じ)。
書き方で「マシ」「マシじゃないない」の議論するってもはや言語関係ないじゃん。
0991デフォルトの名無しさん
垢版 |
2019/08/19(月) 10:40:41.65ID:2nNI8r3o
インライン強制あたりはC#では実現できないILの産み方するんでは?
あとは単位つけれるアレとか。コンパイル時後は消えるけど、書き方の問題だけではなくて実際にコンパイルエラーを起こしてくれる賢い機能だと思うけど。
あとなんだろ。スタックに変数確保がとても楽とかかな。最近やっとc#でも出来るようになったけど、まだまだ不便よね。
0992デフォルトの名無しさん
垢版 |
2019/08/19(月) 23:18:21.85ID:3NQ2ueMV
>>990
言語が違うからマシな書き方が出来るんだが…

>>991
スタックにおくってなんの話だっけ?
0993デフォルトの名無しさん
垢版 |
2019/08/20(火) 11:42:16.19ID:zlJnj2O9
>C#とF#が違う点って「書き方」だけだよね(どちらもCLIに落とされたら同じ)。

機械語になったら同じ(少なくとも同じCPUで実行してれば)だから
PHP の方が Ruby よりましだな
0995デフォルトの名無しさん
垢版 |
2019/08/20(火) 13:38:14.98ID:FzyuHnSO
>>994
それは値型参照型問わず?
0996デフォルトの名無しさん
垢版 |
2019/08/20(火) 13:47:24.56ID:zlJnj2O9
わず
0997デフォルトの名無しさん
垢版 |
2019/08/20(火) 15:50:26.07ID:FzyuHnSO
>>996
その辺書かれてるドキュメントとかある?
ローカルでレコードやユニオンをただ値に束縛してるやつとかもそうなんか?
0999デフォルトの名無しさん
垢版 |
2019/08/23(金) 15:07:25.79ID:Zx6EO+xk
次スレ無しでOK
1000デフォルトの名無しさん
垢版 |
2019/08/24(土) 05:21:57.38ID:JleCqbx3

Slot
🎴👻👻
🎰💣🌸
🌸🍒🎰
(LA: 0.90, 0.83, 0.75)
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 3037日 2時間 35分 8秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況