はじめに
からあげ帝国、バンザイ!! nikkieです。
春ですね。F#する春です🌸
慣れるための素振りをしていきましょう。
目次
F#で自分だけのクソコンソールアプリケーションを作る
この記事では、F#で小さなコンソールアプリケーションを作ります。
我が主(=皇帝)のからあげさんの記事に、オマージュ捧げていく形となります。
. ├── unko/ │ ├── __init__.py │ └── unko.py └── pyproject.toml
F#版(今回作ったもの)
. ├── Unko/ │ └── Unko.fs ├── Program.fs └── UnkoFSharp.fsproj
% dotnet run puripuri
順を追って見ていきましょう。
コンソールアプリケーションを作る
dotnet new console -lang F#
コマンドでスキャフォールディングします。
このドキュメントとは異なり、Project.fs
には
printfn "Hello from F#"
としか書かれていません。
これをドキュメントにあるようにしていきます。
let deru = printfn "puripuri" [<EntryPoint>] let main argv = deru 0
deru
関数を定義し、main
関数の中で呼び出しています。
ちなみにコンソールアプリケーションはこちら
「明示的なエントリ ポイント」を使ってますね
モジュールを導入
このあたりはGPT-4に聞きつつ、ドキュメントにあたって進めました。
1つのファイルにderu
関数があるのはクソの系譜の美学に反するので、別のファイルに分離していきます。
これは「モジュール」というそう2。
ルート直下のUnko.fs
に切り出してもよいのですが、ディレクトリを導入することにしました(Unko/Unko.fs
)。
module Unko let deru = printfn "puripuri"
fsprojファイルに追加します。
<ItemGroup>
+ <Compile Include="Unko/Unko.fs" />
<Compile Include="Program.fs" />
</ItemGroup>
ここは順番に意味があるそう。
逆順だとビルドできません。
Program.fs
ではopenします。
+open Unko -let deru = printfn "puripuri" [<EntryPoint>] let main argv = deru 0
頻繁に使用されるモジュールと名前空間に open キーワードを使用すると、そのモジュールまたは名前空間のメンバーを参照するときに、完全修飾名の代わりに短い形式の名前を使用することができます。
Unko
モジュールのderu
関数は、Unko
モジュールをopen
するとderu
として参照できるようです
こうしてF#版Unkoが完成しました!🙌
Unko/Unko.fs
の文字列を変更してdotnet run
すると、出力される文字列が変わります。
終わりに
F#に慣れるために、小さなコンソールアプリケーションを作る素振りをしました。
モジュールを作り、それをopen
するんですね(open Unko
)
fsprojファイルはファイルごとにCompileを書く必要があるようです。
ディレクトリを指定できたら楽な気がするんですが、F#の大きなライブラリはどうしてるんでしょうか3
私は敬虔なからあげ帝国臣民なので、新しいプログラミング言語や開発ツールでは、まずunkoを作るという禊をしているのですが、https://t.co/LaLyTtZVvp
— nikkie / にっきー (@ftnext) 2024年4月14日
F# はopenというキーワードみたいだから、open Unko になるの、なんかおもしろい。ぶふっwwhttps://t.co/aJydHmmecZ pic.twitter.com/1K0PV1DVCh
P.S. nikkieによるunkoオマージュギャラリー
皇帝のお言葉
とんでもない系譜(クソライブラリ)産み出してしまった… > Ryeで環境構築して開発中の自作Pythonライブラリを含んだDockerイメージをビルドする - nikkie-ftnextの日記 https://t.co/1ohEMYZcip
— からあげ (@karaage0703) 2024年2月18日