FSharp
About 2 min
FSharp
関連WikiName
自分のブログ
- MacとWindowsの両方で使う雑用コマンドライン言語にF#はどうだろう? - なーんだ、ただの水たまりじゃないか
- F#が雑用言語に良い。 - なーんだ、ただの水たまりじゃないか
- F# でのfsxベースの開発 - なーんだ、ただの水たまりじゃないか
- Create a single binary GUI tool with photino and F# on osx - なーんだ、ただの水たまりじゃないか
- Type-First Developmentが良いという話 - なーんだ、ただの水たまりじゃないか
ほかにもいろいろ書いているがとりあえず。
外部リンク
言語仕様関連
- Explore this site - F# for fun and profit fun and profitはとりあえずここから。
- F# for fun and profit: Choosing between collection functions 良く見るコレクション周りのhow to
- List (FSharp.Core) - FSharp.Core 一覧から真面目に探したい時はこちら。
- F# for fun and profit: Choosing between collection functions 良く見るコレクション周りのhow to
- Language Guide - F# - Microsoft Learn Microsoft Learn
- About F# - The F# Language Specification スペック
- Printf (FSharp.Core) - FSharp.Core リファレンス、とりあえずprintfのリンクを貼っておく
- fsharp/src/Compiler/pars.fsy at 686dcabea0f81eafbf800ec4e7ba6e34580ddf2a · dotnet/fsharp パーサーのソース。リファレンスの文法はexpr周りが厳密じゃないので。
作業開始時の細々とした情報
- Get Started with F# in Visual Studio Code
- F#でNuGetのライブラリを使う
- dotnet add unimemo.fsproj package FSharp.Data F#でのnugetパッケージの追加
- Deedle: Exploratory data library for .NET dataframeっぽい奴。
- What does this C# code look like in F#? (part one: expressions and statements) « Inside F#
- Common I/O Tasks - Microsoft Learn dotnetだけどF# で使うので。
メモ
良く忘れるが、string interpolationはドル
$"string-text {expr}"
$"string-text %format-specifier{expr}"
$"""string-text {"embedded string literal"}"""
ソース: MSDN: Interpolated strings
PublishReadyToRun
シングルバイナリを作るのに、PublishReadyToRunでAOT出来るぜ、とSingle file application - .NET - Microsoft Docsに書いてあったので試してみたら、 サイズが36MBから60MBに膨らんでしまう。 60MBは嫌だなぁ、と思い、AOTしないことに。
前も試した気がするが、メモしておかないとまたやりそうなのでここにメモ。
Argu
良く使うのでメモしておく。
プロファイラ
Performance Profiling F# | codesuji そのうち試したい。
System.IO.Compression等の追加
アセンブリに入ってそうなdllってどうやって追加するの?と思ったが、nugetになっていて全部nuget経由で追加するものっぽい。
$ dotnet add package System.IO.Compression
$ dotnet add package System.IO.Compression.ZipFile
StreamからのReadAllLines的な事をするコード
ZipEntryなどはFiles関連の便利メソッドが使えないので、たまにこの手の処理が必要になる。 終わりまでReadLineする、みたいなwhile的な処理はいまいち書きにくいが、一旦seqを作ってそれをfilterしたりすると簡潔に書ける。
use sr = ....
let lineSeq = seq { while true do yield sr.ReadLine() }
lineSeq
|> Seq.takeWhile (fun line -> line <> null)
|> Seq.toList // do read before sr close.
Fable関連
なんかgolangのランタイムで動くFSharpみたいな言語無いかなぁ、と思っていて見つけたもの。
- Golang (wip) by dbrattli · Pull Request #3345 · fable-compiler/Fable
- The Go Programming Language golangのコンパイラ周辺のドキュメント。外から使える感じでは無さそうだが、一応メモしておく。
fableからやると、トランスパイラにdotnetが必要になっちゃうよなぁ。やはり似た言語くらいがいいんじゃないか、という気もする。
dotnet fsi
たまに使おうとすると忘れているが、コマンドラインでちょろっと試すなら、dotnet fsiとする。
$ dotnet fsi