数値 (Int) に 1 がいくつあるかをカウントする小さな haskell プログラムを作成しました。実行しようとすると、あいまいな変数制約について haskell が文句を言います。それは床の使用に由来することを私は知っています。また、stackoverflow に関するいくつかの回答も読みました。しかし、私はそれを回避する方法を本当に見つけませんでした。これが私のコードです:
count_ones = count_ones' 0
count_ones' m 0 = m
count_ones' m n | n-10*n_new == 1 = count_ones' (m+1) n_new
| otherwise = count_ones' m n_new
where n_new = floor (n/10)
何かアドバイス?