我想用haskell写一个函数,它不介意我以什么顺序为其提供参数,例如,我想统一这两个函数

    reproduce1 :: Male -> Female -> Child
    reproduce2 :: Female -> Male -> Child

通过一个功能“复制”。

最佳答案

您可以使用多参数类型类来执行此操作。

{-# LANGUAGE MultiParamTypeClasses #-}

class Reproduce x y where
  reproduce :: x -> y -> Child

instance Reproduce Male Female where
  reproduce = reproduce1

instance Reproduce Female Male where
  reproduce = reproduce2

但是,我很好奇您为什么要这样做。

10-06 14:54