関数の引数として受け取る場合

名前的型付け
・関数のシグネチャを見れば型がわかる/確定する
・関数内のコードを解読する必要がなく型がわかる/確定する
・そのため関数の開発者にも利用者にも理解がしやすい
・関数内のコードを解読して食い違いがあれば関数単体で実行前にエラーを出すことができる
・そのため開発時も保守更新時も効率がいい

機能的型付け
・関数のシグネチャで何も指定がない
・そのため関数の開発者はお手軽に使いやすい
・利用者にはわかりにくい
・関数内のコードを解読すれば型がわかる/確定する
・そのため関数を利用する側の各コードと突き合わせれば実行前にエラーを出せる可能性がある
・関数単体ではエラーは出ない

ここで「型がわかる/確定する」とは「具象型」または「特定の操作(群)が可能な抽象型」であることがわかる/確定するという意味である
名前的型付けの場合でもその抽象型に名前が付いているとは限らない
例えばインターフェースAとインターフェースBの両方を満たす抽象型はそれ自体の名前を持たないが抽象型としては確定する