Localized type alias declarations seems like that they could be very helpful especially in testing.
Example
it "test 1" do
type Result = {a :: Int}
let result = {a: 1} :: Result
let argFunc :: forall a. a -> Result
argFunc _ = {a: 5}
functionToTest argFunc `shouldEqual` result
it "test 2" do
type Result = {a :: Int, b :: String}
let result = {a: 1, b: "hi"} :: Result
let argFunc :: forall a. a -> Result
argFunc _ = {a: 5, b: "hi there"}
functionToTest2 (functionToTest argFunc) `shouldEqual` result