我有以下要求:给定一个有理数(x % y):
- 如果 y != 1 => 返回 "x y"
- 否则:返回“x”
以下功能有效:
import Data.Ratio
my_show :: (Integral a, Show a) => (Ratio a) -> String
my_show rat = let x = numerator rat
y = denominator rat in
if y /= 1 then (show x) ++ " " ++ (show y) else show x
有没有可能让它更优雅?例如,我在 Data.Ratio 的来源中看到它对函数输入使用了一些符号:(x:%y)
,但它对我不起作用。所以我必须使用let
and 显式调用numerator
and denominator
。