たとえばF x y
、カリー化関数として定義し、環境で部分関数(F x)
が頻繁に使用される場合、パフォーマンスの観点から常にlet binding
名前付き関数にする必要がありますか? property
(たとえば、キャッシュされたのと比較して、などobject
をキャッシュする必要がない場合が多いため)property
Array.Length
let Gofrom (board: int[][]) (color: int) (reelID, reelPosition) (direction: Direction) =
let rec walkfrom x =
match direction.Target x with
| (a, _ | _, a) when a = -1 || a = board.Length -> x
| a, b when board.[a].[b]= color -> walkfrom (a, b)
| _ -> x
walkfrom (reelID, reelPosition)
対
let rec Gofrom (board: int[][]) (color: int) (reelID, reelPosition) (direction: Direction) =
match direction.Target (reelID, reelPosition) with
| (a, _ | _, a) when a = -1 || a = board.Length -> (reelID, reelPosition)
| a, b when board.[a].[b]= color -> Gofrom board color (a, b) direction
| _ -> (reelID, reelPosition)