haskell-jp / questions #99 at 2021-12-01 19:27:44 +0900

これと等価なことをHaskellでやる方法ってありますか?
https://qiita.com/yosuke_furukawa/items/ec30f619166cb8090a09
コレってに書いてある
When listen(2) is called on an unbound socket, the socket is automatically bound to a random free port with the local address set to INADDR_ANY.
相当なだけじゃないんですか?
たぶんそうですね。そもそも空いてるポートを知ってるのはカーネルだけなので、そういう機能はシステムコールにしかできない芸当だと思います
やっぱOSの機能ですよね。warpから使いたいなぁ、と思ってソースを覗いていたら、warpが利用してる bindPortTCP の他に、 bindRandomPortTCPなる関数があるじゃありませんか!これを使って作ればいいのか!
と思ったら withApplicationtestWithApplication というそのものズバリな関数がすでにありました!
https://hackage.haskell.org/package/warp-3.3.18/docs/Network-Wai-Handler-Warp.html#v:withApplication