diff --git a/core-program.cabal b/core-program.cabal
--- a/core-program.cabal
+++ b/core-program.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           core-program
-version:        0.5.0.3
+version:        0.5.0.4
 synopsis:       Opinionated Haskell Interoperability
 description:    A library to help build command-line programs, both tools and
                 longer-running daemons.
diff --git a/lib/Core/Program/Arguments.hs b/lib/Core/Program/Arguments.hs
--- a/lib/Core/Program/Arguments.hs
+++ b/lib/Core/Program/Arguments.hs
@@ -688,11 +688,11 @@
 
 extractRequiredArguments :: [Options] -> [LongName]
 extractRequiredArguments arguments =
-    List.foldl' h [] arguments
+    List.foldr h [] arguments
   where
-    h :: [LongName] -> Options -> [LongName]
-    h needed (Argument longname _) = longname : needed
-    h needed _ = needed
+    h :: Options -> [LongName] -> [LongName]
+    h (Argument longname _) needed = longname : needed
+    h _ needed = needed
 
 extractGlobalOptions :: [Commands] -> [Options]
 extractGlobalOptions commands =
