【.NET】F#について語れ3【OCAML】 (249レス)
1-

1: 2019/09/08(日)19:16 ID:8+6E4mCC(1) AAS
このへん
外部リンク:fsharp.org
123: 2022/09/04(日)08:36 ID:gz8Ny9ff(3/3) AAS
予測変換でunitになったけどunionのことね
124
(1): 2022/09/04(日)09:53 ID:W7eXpTBn(1) AAS
>>121
まあそこは分かる
ライブラリーとして使う分には使えなくなる事はないのかなとは思うけれど.NET Nativeみたいにビルドから対応してないみたいのが出てくるとあれ

そこはCILとして対応し続けてほしい所だがの
125: 2022/09/04(日)10:16 ID:RQxkFcRF(1) AAS
正直 D より F# が永息するとは思わなかった
126
(1): 2022/09/07(水)11:36 ID:AY0Q59m9(1/2) AAS
>>124
F#のアセンブリは.NETと完全な互換性はないからそのうち使えなくなることはあり得る
127
(1): 2022/09/07(水)12:07 ID:TVqoBGD1(1) AAS
完全互換じゃないってどういう話?
CILから外れてたらそも動かんやろ?
128: 2022/09/07(水)12:14 ID:AY0Q59m9(2/2) AAS
>>127
F#の関数はC#から使えないこともあるって知らないか?
129
(1): 2022/09/07(水)15:52 ID:fPcvQ9Ha(1/2) AAS
それはC#がCILを満たしていてもなんでも呼べるわけではないって話じゃないの?
C#からのF#の呼び出し、やったの前だし呼びやすい形に調整してたから全部がどうとかは知らん。
130: 2022/09/07(水)15:53 ID:fPcvQ9Ha(2/2) AAS
とりあえず具体的にこの辺の項目とか上げてくれ。完全性求められても知らん
131: 2022/09/07(水)15:54 ID:nM+jMFuw(1/3) AAS
>>129
VBからも呼べないんだわ
132: 2022/09/07(水)15:55 ID:nM+jMFuw(2/3) AAS
当然IronPythonからもな
133: 2022/09/07(水)15:57 ID:nM+jMFuw(3/3) AAS
CILがどうとかじゃなくF#の関数はF#が消えたら呼べなくなるからdllだけ残っても何の役にも立たんよってこと
134: 2022/09/07(水)17:41 ID:iZdF3GMM(1/2) AAS
internalじゃないやつは静的クラスのメソッドとして呼べるだろ?
135: 2022/09/07(水)17:44 ID:iZdF3GMM(2/2) AAS
その辺のF#だけからしか呼べない形態、どれがあったのか忘れた(というかあまり問題にしてなかった)けど、他から呼べるように公開したいものはそう出来て、それはCILにのっとってるんだから>>126はちょと違うんじゃ?と思った次第
136: 2022/09/09(金)09:23 ID:v5NOhSMN(1) AAS
流行らないなあ、キレイなML+標準ライブライブ超充実の、歪なようで噛み合う組み合わせがめっちゃ面白いんだけど

コミュニティには参加してないけど、むしろ面白さを重んじる俺みたいなアマチュア好みだからプロに疎まれてる感とかあるのかなって
137: 2022/09/09(金)09:42 ID:JNXuk8tN(1/2) AAS
海外とかでメイン言語として採用してる会社とかもあるしプロだから、とかは別にないでしょ

ただやはりいつまであるのかってのは客からも上がってくるからそういうのを忌避したいとことか別にC#でいいんじゃ?って思うところはあえて採用しようとはしない、って感じじゃ

自分は生産性上がっていいと思うけどね
138: 2022/09/09(金)12:00 ID:UNSkh5ZW(1/2) AAS
vbがどうなったか覚えてるだろ?
あのマイクロソフトの代名詞にもなったvbが切られるんだからな
C#で十分な生産性が確保できる以上、五十歩百歩のメリットしか出せない割にデメリットのでかい別言語は要らんのよ
ほとんどスタッフの趣味で続いてるようなもん
139: 2022/09/09(金)13:05 ID:JNXuk8tN(2/2) AAS
うんだから、お前がロクなメリットを引き出せてない話はわかったからそれはどうでもいいです
140: 2022/09/09(金)13:31 ID:UNSkh5ZW(2/2) AAS
引き出すも何もunionくらいだろ
些細なことよ
141: 2022/09/10(土)18:54 ID:Qyx+mFnV(1) AAS
C#のUnionはC#10に実装の話も出てたけど11にも間に合わなかったな
型制約とenumで似たようなことができるとは言えあればあったで便利だと思うんだが
142
(1): 2022/09/11(日)01:28 ID:bYqWwakP(1) AAS
QiitaのF#を知ってほしい人もlinuxだし
M.Hiroi氏もWSLのUbuntuでF#入門やってた
windowsのVisualStudioじゃなくて
わざわざ仮想マシンやWSLのlinuxでやるのが主流なのかね
143: 2022/09/11(日)13:02 ID:ouHf9wOU(1) AAS
C#から呼び出せるとか.netライブラリ使い放題とかは正直微妙に終わったと思う
その代わりUnix系言語の1つとして認められるようになった
この板はwindows系の言語は無視される傾向にあるのでそれはよいことだ
俺みたいにwindowsのCUIでしか使ってないごく少数派からみれば微妙ではあるが

dotnetになってからコマンドラインだけでやるのはもうしんどいというか無理があるね
設定をxmlで書かないといかんし調べてもよくわからんかった
fscとfciでがんばり続けるほどのレガシーもないからいいけど
144
(1): 2022/10/16(日)18:17 ID:ey6gZIQ/(1) AAS
Fableやろうとしたけど環境構築で死んだわ
もうちょっと情報が充実してくれると助かるんだけどねえ
145: 2022/10/19(水)08:16 ID:14kChQ3G(1) AAS
>>142
winget install dotnetなんとかsdkのコマンド一発で環境構築終わらなかったっけ

wslは知らないけど、pc向けlinuxならwingetの代わりにaptとか別のパッケマネで挿げ替えれば通った記憶があるので、linux/macOSなど若干アウェーな環境でも特に障壁はないはず

好みの問題かと
146
(1): 2022/10/19(水)09:37 ID:qMrE132j(1) AAS
>>144
Fableで何をしようとしているかにもよるけど、SAFE stackとかは?
147
(1): 2022/10/23(日)07:42 ID:Ok80kDIa(1) AAS
>>146
フロントエンドだけで使う想定だったんで、SAFEだとちょっと大掛かりかなと思ってた

ちなみに原因はFableじゃなくnode.jsの依存関係にあった
npm installした後にnpm audit fixコマンドで脆弱性潰せみたいなメッセージが出るけど、
このコマンドを実行したせいで依存関係がめちゃくちゃになったらしい
無視したら普通にnpm startでコンパイル成功した
148: 2022/10/24(月)00:50 ID:8Lz7V8Tn(1/2) AAS
>>147
なるほど。まぁ解決してるようなので良かったです。

Fableは日本語の情報が少ないので苦労するよね。

最近は個人的にFable.Litがお気に入り。
149
(1): 2022/10/24(月)10:05 ID:aCYxRFeC(1/2) AAS
Fableも最近はElmぽくしてるやつが主流?
150: 2022/10/24(月)13:17 ID:CSVgb4N8(1) AAS
YouTube で有名な雑食系エンジニア・KENTA の動画がある

EC2はもうオワコンです
www.youtube.com/watch?v=G_ILES8fmf8

もう、Windows の実行環境がない。
もう、OS, AWS EC2 も使わない。管理・構築しない

すべてコンテナ・Docker へ移行した。
使うのは、AWS Lambda, Fargate, Kubernetes

DockerはLinuxだけの技術で、他のOSでは使えない。
Microsoft も、Linux財団に加入して開発している
151: 2022/10/24(月)17:59 ID:8Lz7V8Tn(2/2) AAS
>>149
Elmishも有れば、Felizスタイルっていう素のReactっぽい書き方も有ります。

この辺は好みで選べる感じみたい。

自分はElmishに慣れてしまったのでFelizスタイルはよく知らないっす。
152: 2022/10/24(月)18:04 ID:aCYxRFeC(2/2) AAS
Felizは初めて聞いた。フロント絶対触らないぞ、と頑張ってきたけどぼちぼちやらないといけなくなってきたからちょっと見てみるわー

jsでやるよりやっぱり楽かなー
153: 2022/11/02(水)07:52 ID:lcK3s+C7(1/6) AAS
F#についてはまったくの初心者です
fortran pythonをうごかしていました
質問ですがf#でコマンドラインで実行ファイル作成法がわかりません
c#ですとコンソールで
csc file.cs と打って
実行すれば実行ファイルを作成できます
F#にもfsc.というコマンドがありますがエラーになります
dotnetをつけてもだめでした
visual studioでbuildをすればいいのかもしれませんが
visual studio不慣れで使いたくありません

f#ではコマンドラインで実行ファイルをつくることはできないのでしょうか
できないならf#はあきらめc#を勉強しようと思います

ご教示よろしくお願いします
154
(1): 2022/11/02(水)10:18 ID:VBEVpYP2(1/4) AAS
fsiでスクリプト実行じゃなくてコンパイルしたいなら、面倒だけどdotnet new --lang指定でプロジェクト作ってdotnet build
155
(1): 2022/11/02(水)11:13 ID:lcK3s+C7(2/6) AAS
>>154
ありがとうございます
以下を実行しました
program.fsを作成
dotnet new console -lang F# -o program -f net6.0
cd program
dotnet build
cd bin/bpc/debug/net6.0
program.exe

実行ファイルはできましたが
ソースひとつごとにプロジェクトを作成して
実行ファイルはソースと別のディレクトリにできる
ということになりますね

fsiを動かすにしても1ソース1プロジェクトのようですし
これで作業は効率的なんでしょうか
visual studioを使えっていうことでしょうかね

これまで
editorでrソース作って コンパイルして実行という手順に慣れている者にとっては面倒ですね

fsc.exeはいつ使うんでしょうかね
やはり C#かな
156
(1): 2022/11/02(水)13:49 ID:gl9lvyny(1/2) AAS
build時のデバッグ情報にfscの呼び出しあるだろ?真似ればいいんじゃね
自動で適切な引数渡してくれるのに、わざわざ自分でコンパイラオプションや必要なアセンブリ集める方がよっぽど面倒だと思うが
157: 2022/11/02(水)14:01 ID:gl9lvyny(2/2) AAS
そもそも初心者が実行時コンパイルの僅かなオーバーヘッドを気にするべきじゃないと思うんだが
fsiスクリプトはほとんどの言語より高速だし、fscを触るのは本当にパフォーマンスに困ってからでいいかと
158
(3): 2022/11/02(水)15:04 ID:VBEVpYP2(2/4) AAS
コンパイラの仕組みに興味があるなら
外部リンク[md]:github.com

コマンドラインのオプション解析、parsing/lexing、参照解決、型チェック、最適化、バイナリ生成etc
全てfsharpで書かれてるので勉強にもなるし、ぶっちゃけマニュアル読むより速い
159: 2022/11/02(水)16:40 ID:RxFRhVgo(1) AAS
>>158
MSの長い識別子と、頑強なんだろうけどベタ書きコーディングスタイルだとC#に見えてくる

yacc/lex風のDSLで文法定義してるのはF#らしいし眺める価値ある
160: 2022/11/02(水)17:11 ID:Cz0q4/YM(1) AAS
>>155
こいつみたいに勘違いして文句つける奴ほんまうざい
161
(2): 2022/11/02(水)17:25 ID:lcK3s+C7(3/6) AAS
>>158
ありがとうございます。
fsc.exeもfsharp(?)で書かれたテキストファイルなんですね
fsc.fsを155と同じ手順でコンパイルしてみました
fsc.exeはできましたが、
fsc program.fsを動かしてもprogram.exeはできません
結果を表示しますのでfsiになっているようです

ソースを書き換えればいいのでしょうが、私には無理です
fsharp 勉強してみます
162: 2022/11/02(水)18:58 ID:lcK3s+C7(4/6) AAS
>>161
すこし動かしてみました 
表示はどうやってもHello from F#
になります。
ソースを読み直してみます
163
(1): 2022/11/02(水)19:28 ID:lcK3s+C7(5/6) AAS
>>163
buildしなおしましたら エラー100個でました
164: 2022/11/02(水)20:03 ID:lcK3s+C7(6/6) AAS
どうでもいい話でおさわがせしています。
原因わかりました 対処法わかりませんが
dotnet new console -lang F# -o program -f net6.0
でプロジェクトをつくると
program.fsは hello worldを表示するfsをつくります
ソースをかえてbuildしたつもりでしたが、
常にprogram.fsをbuildしていました
ですので何をしてもhello wolrdを表示していました。

おさわがせしましてもうしわけありません。
155の流れのバッチファイルをつくればいいのかと考えています
165: 2022/11/02(水)21:08 ID:VBEVpYP2(3/4) AAS
>>161
ごめんよくわからない、>>158のfscコンパイラのソースをコンパイルしたの?
fsc(.exe, dll etc)がそれだから持ってるなら必要ないよ
引数に何を与えるべきかドキュメント読んで分からないなら、>>158のコードは参考になるけど

dotnetのプロジェクト管理が嫌なだけなら、>>156の出力をコピペ&好きに改竄して、ps1でもbatでもshでもnmakeでもmakeでも好きな方法で呼べばいい
dotnet build -v d (-verbosity detaildの略)ね

ホスト、ターゲット、動的/静的リンク諸々全て環境依存だけど
dotnet path/to/fsc.dll -o:path/to/fsharp.dll \
-g --debug:portable --noframework \
--define:TRACE -define:NET6_0 \
...
-optimize- --tailcalls-
-r:path/to/dlls \
...
--target:exe --nocopyfsharpcore ... Program.fs
みたいなコマンドを発行してはず
166: 2022/11/02(水)21:15 ID:VBEVpYP2(4/4) AAS
というかこんな些末な事を気にする前に、とにかくfsiを立ち上げて公式チュートリアルでもこなせば
167: 2022/11/02(水)21:24 ID:ahOvjMWx(1) AAS
環境構築が趣味なんだろ
168: 2022/11/02(水)22:18 ID:Dj/Cqb/4(1) AAS
ビルドできてREPLも使えてるのに何が問題なんだ?
自分好みのビルドスクリプトを書きたいようだけど、使ってない言語のコンパイラオプションを適切に選べるとでも思ってるのか

そんなに俺々ビルドスクリプトを書きたければ、F#で書けばいいのに
batなんかよりずっと楽に書けるぞ
169: 2022/11/03(木)07:54 ID:diaW/wXZ(1/3) AAS
もう一度 fsc.exeを探しましたら 見つかりました
おそらく visual studioをインストールしたときにできたものと思います
場所は
c:\program file (x86)\Microsoft Sdks\F#\4.0\Framework\v4.0
コマンドプロンプト画面で
fsc program.fsxと打つと
program.exeができました
fsi program.fsx
でhello world
も表示できました

editor+コンソールでの作業に慣れていますので
これで心置きなくF#を勉強できます

おさわがせしましてもうしわけありませんでした
170: 2022/11/03(木)07:59 ID:sWIbv+Sc(1) AAS
何でわざわざexeにしてるのか意味わからん
評価したいとこ選択して評価すればいいだろ
171: 2022/11/03(木)08:26 ID:diaW/wXZ(2/3) AAS
FSI.exeが動きますので
評価はfsiでもできます
ソース作ってfsiを動かすだけですので
私的にはテストを楽にできます

複数の機器でテストしたいこともありexeファイルも必要となっています。
172: 2022/11/03(木)15:14 ID:diaW/wXZ(3/3) AAS
visual studioをインストールしなくとも
Visual F# Tools 4.0 RTM
外部リンク[aspx]:www.microsoft.com
をダウンロード、インストールすれば
f#のコンパイル環境をつくれました。
VS2022はwindows32ビットに対応していなかったのですが、これでF#をテストできます
(dotnetを使えば動くようですが)
173
(1): 2022/11/07(月)10:48 ID:tRej1mOW(1/2) AAS
vscodeで動かそうとしましたがデバッグの環境をうまく設定できず
コマンドラインでうごかしています
バージョンが古いせいかときどきエラーでとまります
たとえば
printfn "%s %s %s %s" names.[0] names[1] names[2] names[3]

Successive arguments should be separated by spaces or tupled, and arguments involving function or method applications should be parenthesized

printfn "%s, %s, %s, %s" names.[0] names[1] names[2] names[3]
にして動きました

また、小文字、大文字を区別しているんですね しばらくエラーがでて考えてしまいました

関数型とは なんでも名前をつけるということなんでしうか
例えば  a+bはadd とか
途中で数式を使わないということでいいんでしょうか

面白いですが
数値解析+画像表示に使えるかどうか
174: 2022/11/07(月)16:58 ID:tRej1mOW(2/2) AAS
letで関数作るとき
改行するとpythonのように文字下げしなければならないんだね
わかるまで1日かかった
175
(1): 2022/11/08(火)11:41 ID:TUBjjFuN(1/2) AAS
ライブラリ FSharp.PowerPackを入れて複素数を計算してみようとしていますが出力方法がわかりません
わかりましたら教えてください 
単純化しています 

#r "FSharp.PowerPack.dll"
let x = complex -1.0 0.0
printf  (を出力)
176: 2022/11/08(火)14:01 ID:TUBjjFuN(2/2) AAS
>>175
わかりました
printf "%e,%e" x.RealPart x.ImaginaryPart

また1日かかってしまいました
177: 2022/11/08(火)15:23 ID:OezK6zca(1) AAS
洋書なら比較的新しい環境構築も含めた入門書あるだろうから先にそれ読んだ方がいいんじゃないの
178: 2022/11/08(火)18:53 ID:ruqPIjM/(1) AAS
F#の情報は、まあ少ないなあ

プログラミングの一般的な知識や慣習が欠けてるならPowerPackで古い日本語サイトや書籍の多いML(というかOCaml)と大体互換になるので、それも参考に
179: 2022/11/09(水)18:04 ID:Ye9xlnfW(1) AAS
アマゾンでは評判悪いですが
やさしいF#入門 日向健二著
で勉強しています。2010年出版ですのですこし古いかもしれませんが基本は同じかと
windowsアプリケーションの例題を動かしてみました
オブジェ久トに関しては今から勉強です

それとは別に
microsoft visual F# programming
www.visualfsharp.com/index.htm
でsystem.drawingでのグラフィックを試しています
xplotとかplotlyが必要なのかと思っていましたがどうなんでしょうか
180: 2022/11/10(木)00:34 ID:zLzbMwRI(1/2) AAS
>>173
関数型とは何か、なんて言える程偉くないのでとりあえず
処理を連ねて書き(パイプライン、|>)、抽象化できる部分に名前を付けてファクターアウト(関数合成、>>)
というF#の目立つスタイルについてだけ

それ自体は連鎖型言語(forth, postscript等)スタイルを型推論で補強したもの、と見ていい
名前の付け易さ=テキストとしてのコード片に意味を与えられるか

グローバル状態へ(副)作用する演算子の併置のみで記述する連鎖型言語には、プログラムから任意に切り出したコード片も有効なプログラムとなる性質がある
一方でそのコード片の任意な繋ぎ合わせも有効(だけど多分無意味)という問題もある

関数型スタイルは状態を持つ事を避ける真逆の発想でロジックの分離を奨励するけど、柔軟な記法定義を許せば連鎖型風のテキスト上の切り出し性までエミュレートできる
さらに型推論で無意味な貼り合わせの大半を防ぐ、というのが売り
181: 2022/11/10(木)00:45 ID:zLzbMwRI(2/2) AAS
関数型を極端に突き詰めれば、引数に一切言及しないポイントフリースタイルに行き着くけど
これは連鎖型スタイルそのもの、唯一のグローバル状態が暗黙の引数なので言及しない

当然どちらの極端も実用的でないので、名前は付けようね
182
(1): 2022/11/10(木)01:26 ID:OT0JIVh4(1) AAS
純粋なforthプログラムはコンビネータの列と見なせるし、むしろ関数型と呼んで良いのでは
括弧、というかスコープが無いのでラムダ計算との相性が悪すぎるのが難点
lispの対極
183: 2022/11/10(木)18:27 ID:Z9ZM7zcW(1) AAS
コードをフラットに書ける点に着目するならML系やHaskellの自動カリー化も忘れるな
lispでもやろうと思えばできるけど、()のネストでフラットには読めないし、()を除いたら自慢の一貫性のある意味論が崩壊する
184: 2022/11/11(金)07:57 ID:9wAD6Zbc(1/2) AAS
vs、vscodeを使えればわざわざやることもないのですが
これらが使えないので
sublime text3 でF#の実行環境をつくりました
パケージのインストールに手間取りました

これで、エディターだけで実行までできるようになりました
185
(1): 2022/11/11(金)19:22 ID:9wAD6Zbc(2/2) AAS
sublimeが動きだしましたので、これまでつくったWEBアプリのサンプルをテストしてみました
ウィンドウを開いて線を表示する例、 sublimeですと動きません
いろいろ試してne for,rm()をnew Form(,Visible=true)にすると動きました
ところが、修正したソースをコマンドラインからfsiで動かす動きません

どうなってるんでしょうかね
186: 2022/11/11(金)21:43 ID:bDcA3rjx(1) AAS
別スレ作ってそっちでやれよ
187: 2022/11/12(土)06:48 ID:Vk5CwTlK(1) AAS
>>185
F#で書いてるんだけど
188: 2022/11/16(水)19:40 ID:+z5R74k6(1) AAS
Fabulousで.NET MAUIが使えるようになったらしい
Twitterリンク:Tim_Lariviere
Twitterリンク:5chan_nel (5ch newer account)
189
(1): 2022/12/06(火)21:42 ID:Z/dKkADi(1) AAS
>>182
それでなぜラムダ計算との相性が悪すぎるのか
スコープって見た目の話か
190: 2022/12/06(火)22:36 ID:QlIMbh6a(1) AAS
>>189
おれはgforthで遊んでるくらいだけど、ラムダ計算っぽく書けないという意味ならスコープのせいだろう
ローカル変数(スタック){: ... :}もANSIに入りはしたけどゴミだから俺独自の{ ... }使えって始末
forth-standard.orgで議論やってるけど、ローカル関連は炎上祭りよ
そもそもの言語哲学に反してるのもある
191: 2022/12/06(火)22:56 ID:NXqSTiS1(1) AAS
仮引数すら拡張的な位置付けなら、λの入り込む余地なんてないわな
192: 2023/01/09(月)22:38 ID:P8VzlMvA(1) AAS
最近独学で触り始めて面白いなーと思ってるんだけど
日本でF#の案件ってないのかな
193: 2023/01/10(火)12:55 ID:xQ3373Gc(1) AAS
実案件にF#ぶっ込んだけど募集案件としてはたまーに見るくらいやな
194
(1): 2023/01/23(月)15:49 ID:vIT0tuiY(1) AAS
人気ないなあこの言語
195: 2023/01/23(月)17:21 ID:a4EgEm41(1) AAS
>>194
んー。なんでだろうね
196: 2023/01/25(水)09:53 ID:RZa9VHBZ(1) AAS
この言語って"知られていない"の一点に尽きる気がする
TypeScriptよりも書いていて気持ちいいと思うんだけどな
197
(1): 2023/01/25(水)20:02 ID:2bKf7Laz(1) AAS
MSが力入れてないのでテンプレートがないとかで使いにくいとこはあると思うけどそのほかは今でもC#より優れてるとこ多々あるとは思うよ
Unityで使えるならこっち使いたいわ
198
(1): 2023/01/26(木)08:47 ID:FLQwi+2l(1) AAS
>>197
F# Unityでググると、日本語の記事がいくつかヒットするけどどうなんだろ。
199: 2023/01/26(木)09:15 ID:Jfa2YV7v(1) AAS
>>198
WindowsでIL2CPP使わないなら使えるというかF#でつくったdllの呼び出しが出来るって話だと思う。
モバイルとかはもうIL2CPP前提だから無理ぽ
無理というかタイプのネストが9以下ならいけるはずなんだけどF#じゃ軽く超えるからやはり無理ぽ
200: 2023/01/28(土)18:25 ID:mPwfONGy(1) AAS
技術書コーナーでF#の本を見たことがない
201: 2023/01/28(土)19:31 ID:5OMXkAmW(1) AAS
日本語の本はもう10年近く出てないだろうしな…
202: 2023/02/24(金)18:06 ID:DO2HmvEC(1) AAS
Unityばかり使っててF#全然触ってないんだけど、ジェネリクス使おうとするとF#の楽さが身に染みる
203
(1): 2023/06/14(水)17:45 ID:XMqK+ap6(1) AAS
実務でF#使ってるっていう会社の面接受けてて好感触なんだが果たして本当に大丈夫なのだろうか……C#の経験しか無いんだが
まぁあとはF#みたいな割とマイナー寄りなところの経験積んでも将来なぁみたいな。F#使ってる会社ってどれくらいあるんだろう
204: 2023/06/15(木)13:56 ID:frn/21Cm(1) AAS
正直言語なんでなんでもいいしそこで関数型やら.NETやら慣れたら他にも応用効くでしょ
205: 2023/06/15(木)18:42 ID:pUp5jw/a(1) AAS
G--
206: 2023/06/15(木)23:50 ID:IUPOKbhQ(1) AAS
Elixir の方が良い。
Ruby っぽくて可読性も高い

スクエニでも使っているらしいし、
Ruby on Rails の本も出している、黒田努の本も出た

Elixir実践ガイド、黒田努、2021/2/5
Ubuntu 20.04, Docker CE 19.03, Elixir 1.11

Phoenix, BEAM というフレームワークもある

YouTube で有名な雑食系エンジニア・KENTA は、
Phoenixでポートフォリオを作った。
Railsに似ているのかも
207: 2023/06/16(金)21:44 ID:Ya9firZ8(1) AAS
BEAMはフレームワークじゃないだろ
208: 2023/06/28(水)13:30 ID:BVdlIcNn(1) AAS
漠∞!!!!
列∞!!!!!
廷∞!!!!!!
器∞!!!!!!!
業∞!!!!!!!!
論∞!!!!!!!!!
寿∞!!!!!!!!!!
素∞!!!!!!!!!!!
209
(2): 2023/07/06(木)23:12 ID:D9prSSOp(1) AAS
>>203だけど結局会社入った
F#とC#が入り乱れるフレームワークとそれによるシステムで超苦戦してる
というかF#まじで分かりにくくない?let let letでもう何が何なのか区別が本当につけにくい
{}の区切りも無いから巨大な1ファイルにたくさんクラスがあったりするとどっからどこまでが1クラスなのかすらよく分からない
あとそもそも学習リソースが無い。英語の本やサイトくらいしか包括的に学べない

転職先選び失敗したかなぁ……1週間で早くも落ち込んでる
210
(1): 2023/07/07(金)07:54 ID:CjPc9ICD(1) AAS
>>209
業務でF#使えるなんてうらやましい。

ちょっと古いけど、自分は「実践F#関数型プログラミング入門」って本で勉強したヨ。

がんばれ
211
(1): 2023/07/09(日)22:25 ID:xVwuu7Mx(1) AAS
>>209
typeとletで普通に見分けつかん?
英語の本あれば十分なのでは…というか英語でダメならこれを機会に英語勉強しろ
翻訳するのもあり
212: 2023/07/13(木)00:01 ID:Bgq+8lL5(1) AAS
F#のベストプラクティスがよく分かってないからあれなんだけど
moduleはC#でいうところのstatic classみたいなもんっていうの読んであれ?って
ユーティリティクラスは良くないとか言われるけどあんまstatic classにいいイメージ無くて
F#だと全然そんなことないの?ガンガンmoduleに色々突っ込んじゃえみたいな感じ?

>>210
注文した

>>211
いやtypeとletはそりゃ区別つくけど。関数だろうと変数だろうと条件分岐だろうと全部letじゃない
あとまぁpythonもそうだけどインデントで分けるのほんと分かりにくくて。カッコが無いときつい
英語割りと得意な方だけど勉強するときはやっぱり日本語のほうが頭に入る
213
(3): 2023/07/25(火)20:56 ID:WtO80aoG(1) AAS
判別共用体がよくわかりません。例えば
type Shape =
| Rectangle
| Circle
| Prism
みたいな例だと最初いやお前らどこから出てきた。そんな型ないだろと思って
んじゃenumみたいに0から番号振ってるのかと思ったらそうじゃないって言うし
それでいきなりlet x = Rectangleみたいな使い方が出来るなんて言われてもうちんぷんかんぷん。それでxの型はShapeだっていうし
RectangleだのCircleだのは識別子って言うらしいけどこいつら一体なんなんですかね。英語サイトなんかだとコンストラクタだと思えばいいよみたいなこと書いてたけど
そもそもクラス定義なのにこの内のどれかってどういうことなんですかね。例えばlet y = Circleみたいにやったときxとyの違いってなんでしょう?(参照するアドレスの話ではない)
暗黙的にprivate int typeみたいなのが生成されて番号振られてるとかなら分かるんですが

今日一日ずーっとあれこれサイト巡ってchatgptとかにもお伺い立ててそれでも全然理解できませんでした
大体どの本も最初でさらっと流してるけどどうしてみんな理解できるんですか?自分の理解力の低さに悲しくなってきました
214
(1): 2023/07/26(水)20:16 ID:+lLvjQUw(1) AAS
>>213
オブジェクト指向でのクラス・サブクラス関係のようなものと考えればいいんじゃないか?
RectangleクラスやCircleクラスのインスタンスはShapeとして扱える、みたいな話の関数型の考え方での表現方法
215: 2023/07/26(水)22:00 ID:y+XWVG/2(1/2) AAS
自分は理解に困ったことなかったんで新しい知見だけど
背景知識でどう書き換えられるかを調べてみたらどうだろう。
その感じだとC#とかJavaとかのオブジェクト志向言語は使えるんでしょ
~言語で書いてみる、とかでググってみたらどうかな

番号振られてるのとコンストラクタ(≒クラス)で識別できるのはあまり変わらない気がするけども
216: 2023/07/26(水)22:10 ID:y+XWVG/2(2/2) AAS
xとyの違いは値の違いだと思うよ
どちらもShapeクラスのインスタンス
C#で書くなら、Shapeクラスがpublic static readonly Shape Circle = new Shape(ShapeId.Circle)ってなやつを持ってれば、だいたい同じになりそうじゃん?
これならprivate int ShapeIdで区別してるって考えられるけど。

CircleとRectangleの区別のために、実際にどう実装されてるか気にしなくてもいいと思うけどね
217
(1): 2023/07/27(木)20:58 ID:brQVAwIG(1) AAS
>>213
> そもそもクラス定義なのにこの内のどれかってどういうことなんですかね。

どういうことっていうか、そもそもクラス定義じゃないので。

無理やりオブジェクト指向に当てはめるとすると、
null許容型みたいに複数の選択肢を与える型とレコード型を融合させたものと考えたらいいんじゃないですかね。
ただ例え話にも限界が有るし、素直に頭を関数型言語にシフトさせた方がいいと思います。
218: 2023/07/27(木)23:01 ID:xZLsmpVc(1) AAS
>>213
その例だとRectangle、Circle、Prismは中身がないから
単なる番号と考えることもできるだろうけど
中身がある場合はそうもいかないでしょ
learn.microsoft.com/ja-jp/dotnet/fsharp/language-reference/discriminated-unions

Haskellにも同様のものがあるし
www.letitride.jp/entry/2020/05/05/092738
Scalaにも同様のものがある
zenn.dev/mossan_hoshi/articles/20230417_scala

ScalaではF#のinterfaceのようなものであるtraitと
こうした目的のための特別なclass定義 case classがあり
CircleやRectangleの定義でShapeを継承している >>214
219: 2023/07/27(木)23:41 ID:8hd6E7B/(1) AAS
>>217
あれちょっと衝撃的だったんですけどクラス定義ですよね?typeだし
220: 2023/07/28(金)00:31 ID:335A9+o+(1) AAS
あーちょっと思いついて判別共用体をDLLにしてC#で呼び出して定義に移動したらC#で判別共用体がどう解釈されるかは分かりました
sealed class Shape の中にstatic class Tagsが定義されてint Rectangle = 0, int Circle = 1みたいに番号振られてますね。考え方としては間違ってなかったのかな……
221: 2023/07/31(月)19:11 ID:ah9dO7xg(1) AAS
returnが無いの本当にきついと思うんですけど慣れますか
最後まで関数読んでもそもそも何を返しているのかさえ分からないのが日常茶飯事なんですけど
if condition then xxx, true else...みたいなのがあっては?true?なんじゃこの構文と思って散々検索した後にxxxとtrueのタプルを返してるとchatgpt先生に教えてもらったときは無理だろってなりました
222: 2023/07/31(月)19:38 ID:ZrzF7TzQ(1) AAS
書かれているとおりのものが返るだけなのにreturnがあるはず(あるべき)という
思い込みのせいで分からなくなってるわけで、returnがあるはず(あるべき)という
思い込みはいつか消えますかと問われても、人によるだろと答えるしかないな
223: 2023/08/03(木)19:15 ID:fdtnC88s(1) AAS
確かにオブジェクト指向とは違う表現が多いだろうけど、それ以上に面白いと思うけどなあ
特にCopilotとの相性が良すぎる
224: 2023/11/18(土)22:09 ID:H8GQ4CWH(1) AAS
コンピュテーション式まじでわかんねぇ……
let!とかdo!とか解説をいくら読んでも理解できん。デバッグでステップごとにやってるとlet!の次の行実行しないでいきなり波括弧終わったりするのなんでや
225: 2023/11/19(日)02:44 ID:6eSmn67d(1) AAS
コンピュテーション式の名前をはじめて知った初心者だけどステップインで実行したら1行ずつ動いて、
この記事のコメントで書いてるイメージのコールバックの動きが実感できた
外部リンク:zenn.dev

中身がコールバックだからかデバッガが上手いこと判断してくれないんかな。
226: 2023/11/22(水)23:34 ID:3O36evGu(1) AAS
コンピュテーション式まじで難しい
大体公式の外部リンク:learn.microsoft.comこれはなんだ。理解できる人間が存在するのか
記事とか読んでてもこういう風に自動的に変換できるんだよ簡単だねみたいな書き方してるけど変換先がもうわけわからん
これを頭の中で想像できない人間は書けないのか
227: 2023/11/23(木)12:25 ID:USKpqKz9(1) AAS
いろんなものを1つのシンプルな手法で表現できる仕組みなので、公式の説明にあるように抽象化された難しい概念なのでは
シンプルというのが簡単ではなくて、難しいというのは数学とかはよくあるよね

公式ではうそや矛盾する喩えを出さないように説明するから、
一面を単純化して喩えてるような、複数の外部の記事を自分の中で抽象化することで理解が進むんじゃないかな
228: 2023/11/24(金)14:49 ID:AooEALul(1) AAS
直ぐに仕組みを理解しなくても良いんでは?
仕組みを理解しなくてもある程度は使えるでしょ。
難しく考えすぎな気がする。

関数と変数と条件分岐が全部letだって、評価して何かしら結果が得られるものって思えば、全部同じでも困らないし。
229: 2023/11/26(日)08:28 ID:rhBBg0xx(1) AAS
俺もそのマイクロソフトのサイトだけではさっぱり理解不能だと思う

コンピュテーション式はhaskellのdo記法を真似たものだから
わからなかったらそっちを勉強するのがいいかもしれない
bindの型をみて、bindがチェーンにする様子がイメージできたら
なぜ展開するとああいういかつい式になるのかが理解できてくるよ
230: 2023/11/28(火)00:02 ID:kveRhAUs(1) AAS
この表はよく見返して、型に合わせてパズルするよ。
外部リンク:learn.microsoft.com

コンピュテーション式がなぜ必要なのかとか、どう置き換えればいいのかはここを読むといいかも
外部リンク:fsharpforfunandprofit.com
231: 2023/12/06(水)04:53 ID:GpxwWfWH(1) AAS
rわr
232: 2023/12/09(土)12:18 ID:oBEhbSCx(1) AAS
Haskellとかもそうだけどシンタックスシュガーの元の構文は複雑すぎるので
元の構文までしっかり理解して書けるようにするべきなのか?
というのは意見分かれるだろうな
使い方だけ覚えれば手続き言語のように使えるわけだし
233: 2023/12/15(金)20:18 ID:9Jvor+x/(1) AAS
外部リンク:qiita.com
234: 2024/02/18(日)11:50 ID:OiM0FtCI(1) AAS
F#使ってる人殆といなくて悲しい
235: 2024/02/18(日)13:02 ID:seCcpyNJ(1) AAS
どこのサイトで情報収集してる?
236: 2024/02/18(日)22:19 ID:d0wVXkls(1) AAS
f#の書き方Copilotに質問したらあっさり解決した
geminiは全然駄目だねコンパイル通らなかった
237: 2024/03/17(日)01:51 ID:ER8mRT7B(1/2) AAS
既に三か月もF#の記事がない公式ブログかな
外部リンク:devblogs.microsoft.com

最近ずっとAIとクラウドの話しかされてない
238: 2024/03/17(日)01:52 ID:ER8mRT7B(2/2) AAS
公式ブログかissue
ブログはもはやAIとクラウドの話しかしてない・・・
239: 2024/03/17(日)11:23 ID:uRPhnK4Q(1) AAS
コミュニティベースで頑張るよって言ってるし、あまり書くこともないのかも?
240: 2024/06/25(火)19:17 ID:D5t4IPR/(1) AAS
F#はどの分野でよく使われてるんだろう?
web?データサイエンス?
241: 2024/09/15(日)13:50 ID:FhbWaaUu(1) AAS
F#は良い言語だと思うけど、
C#やTypeScriptにくらべてマイクロソフトの愛情不足だよな
242: 01/18(土)16:10 ID:uWCOaByE(1) AAS
ScalaとF#の両方触ったことある人いる?
もしいれば、個人的な感想で良いのでどちらが好みか聞いてみたい
243: 01/19(日)09:31 ID:fNMlPpUq(1) AAS
自分はScalaはちょびっとしか触ってないけど、前のScalaはScala固有の部分と、Javaを引き継いでる部分と2つにわかれてて綺麗じゃないなって感じを受けた
その点F#はC#とかVBのより型が便利なバージョンって感じでこちらのほうが好み
244: 01/19(日)10:51 ID:OyE1mSX4(1) AAS
OCaml.NETと呼べる存在ならともかく実際はそこまで互換性ないし、どうせ.NET独自言語ならC#でいいからなあ
245: 01/21(火)20:29 ID:3ZeefpU2(1) AAS
scalaはオブジェクト指向側に軸足あるような雰囲気だけど
それにしてはよく頑張って関数型に手を伸ばしてる感じ

F#は生まれ持っての関数型ではあるけど
世間に転がってるF#のコード見ると
そんなに関数型にたしなんでる人のコードじゃないのも多々見る
関数合成よりパイプラインを使ってるようなというか
JavaのStreami APIみたいに、メソッドチェーンみたいにして満足してる人々を多々見る
246: 01/21(火)21:14 ID:O20/r7pR(1) AAS
パイプラインはF#らしいコードって印象
HaskellもData.Functionに(&)が定義されてて、F#のバナナブラケットみたいな使い方が出来る
247: 01/22(水)14:27 ID:D9F/X/85(1/2) AAS
むしろこれからどんどんストリーム的なプログラミングが多くなるんじゃないか
Algebra Effectsで厄介なところはhandlerに閉じ込められそうだし
それはBackusのFP的になるってことだよね
248: 01/22(水)14:43 ID:D9F/X/85(2/2) AAS
F#は利用者が少な過ぎんじゃないかな
処理系やライブラリにバグがあると手こずるよ
でもF#駄目でもOCamlに行けるというのはメリットかも
249: 07/04(金)15:27 ID:rrB9liNl(1) AAS
OCaml、C#, VB.NET→F#
と遍歴してきたけど
Ocaml.Netという造語?は誠にその通りだと思いますわ
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.554s*