on master help sign in
Send tuples out ports properly
commit442bba37d261262cd5607a31a70216c781b00336 authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 15 May 2018, 11:46 (8 years ago) parent12064b2
1 file changed+15−11
compiler/src/Optimize/Port.hs+15−11
compiler/src/Optimize/Port.hs+15−11
@@ -114,20 +114,24 @@ encodeTuple a b maybeC =
114114 return $ Opt.Call encoder [ Opt.VarLocal arg ]
115115 in
116116 do list <- encode "list"
117+ identity <- Names.registerGlobal ModuleName.basics N.identity
117118 arg1 <- encodeArg "a" a
118119 arg2 <- encodeArg "b" b
119120
120− Opt.Function [N.dollar] <$>
121− let_ "a" Index.first <$>
122− let_ "b" Index.second <$>
123− case maybeC of
124− Nothing ->
125− return $ Opt.Call list [ arg1, arg2 ]
126−
127− Just c ->
128− do arg3 <- encodeArg "c" c
129− return $ let_ "c" Index.third $
130− Opt.Call list [ arg1, arg2, arg3 ]
121+ case maybeC of
122+ Nothing ->
123+ return $ Opt.Function [N.dollar] $
124+ let_ "a" Index.first $
125+ let_ "b" Index.second $
126+ Opt.Call list [ identity, Opt.List [ arg1, arg2 ] ]
127+
128+ Just c ->
129+ do arg3 <- encodeArg "c" c
130+ return $ Opt.Function [N.dollar] $
131+ let_ "a" Index.first $
132+ let_ "b" Index.second $
133+ let_ "c" Index.third $
134+ Opt.Call list [ identity, Opt.List [ arg1, arg2, arg3 ] ]
131135
132136
133137