RandomThoughts

RandomThoughts

FSharp

Contents:
  1. 関連WikiName
  2. 自分のブログ
  3. 外部リンク
  4. メモ
  5. PublishReadyToRun
  6. Argu
  7. プロファイラ
  8. System.IO.Compression等の追加
  9. StreamからのReadAllLines的な事をするコード

関連WikiName

自分のブログ

ほかにもいろいろ書いているがとりあえず。

外部リンク

メモ

良く忘れるが、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

良く使うのでメモしておく。

Tutorial

プロファイラ

[Performance Profiling F# codesuji](https://www.codesuji.com/2019/10/13/F-Performance-Profiling/) そのうち試したい。

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.