import Control.Lens
-- is there a way I can write top-level definitions
-- in an arbitrary order like
px = proto & _1 %~ asTypeOf '2'
py = proto & _2 %~ asTypeOf "2"
proto = (undefined, undefined)
-- but have types inferred like the following:
(qx,qy,qroto) = case (undefined, undefined) of
qxy -> (qxy & _1 %~ asTypeOf '2',
qxy & _2 %~ asTypeOf "2",
qxy)
希望qroto :: (Char, [Char])
の が得られますが、proto :: (t, t1)
一般的すぎます。さらに重要なことに、これはpx :: (Char, t)
代わりにqx :: (Char, [Char])
.
より大きな問題は、 Data.HList.Variant.mkVariantの 3 番目の引数で必要な型注釈を削減できるようにしようとしていることです。