私は大きな階乗の数字を合計するプログラムを作成しようとしていると、これは私がやっているものです:SML - エラー:演算子が関数ではありません[tyconの不一致]
fun sumDigits n =
if n < 10 then n
else
n mod 10 + sumDigits(n div 10)
fun factLarge 1 = IntInf.toLarge 1
| factLarge n = IntInf.toLarge n * factLarge(n-1)
sumDigits (factLarge 100)
しかし、 sumDigits (factLarge 100)
にエラーが表示されていて、修正方法がわかりません。
20.sml:8.19から11.26エラー:演算子は関数ではない[tycon不一致] 演算子:式中IntInf.int : (factLarge(N - 1))sumDigits
';'で宣言を終了する代わりに、 'val ... ='で値宣言を実際に開始することができます。たとえば、トップレベルで関数を実行する場合、 'val it = sumDigits(factLarge 100)'となります。 –
ありがとうございます! sumDigitsをどのように変更するかは、動作する方法でわかりました。 'fun sumDigits n = n <10の場合IntInf.toLarge n else n mod 10 + sumDigits(IntInf.toLarge(n div 10));' –