@@ -330,6 +330,11 @@ module MyFunctor = (X: {type t}, Y: {type t}): {type tx; type ty} => {
330330 type ty = Y.t
331331}
332332
333+ module F2: (S1, S1) => T = (X: S, Y: S) => {
334+ let cow = x => Y.foo(X.foo(x))
335+ let sheep = x => 1 + cow(x)
336+ }
337+
333338--------------------------------------------------------------------------------
334339
335340(source_file
@@ -372,7 +377,55 @@ module MyFunctor = (X: {type t}, Y: {type t}): {type tx; type ty} => {
372377 name: (type_identifier)
373378 (type_identifier_path
374379 (module_identifier)
375- (type_identifier)))))))))
380+ (type_identifier))))))))
381+ (module_declaration
382+ (module_binding
383+ name: (module_identifier)
384+ signature: (functor
385+ parameters: (functor_parameters
386+ (functor_parameter
387+ (module_identifier))
388+ (functor_parameter
389+ (module_identifier)))
390+ body: (module_identifier))
391+ definition: (functor
392+ parameters: (functor_parameters
393+ (functor_parameter
394+ (module_identifier)
395+ (module_type_annotation
396+ (module_identifier)))
397+ (functor_parameter
398+ (module_identifier)
399+ (module_type_annotation
400+ (module_identifier))))
401+ body: (block
402+ (let_declaration
403+ (let_binding
404+ pattern: (value_identifier)
405+ body: (function
406+ parameter: (value_identifier)
407+ body: (call_expression
408+ function: (value_identifier_path
409+ (module_identifier)
410+ (value_identifier))
411+ arguments: (arguments
412+ (call_expression
413+ function: (value_identifier_path
414+ (module_identifier)
415+ (value_identifier))
416+ arguments: (arguments
417+ (value_identifier))))))))
418+ (let_declaration
419+ (let_binding
420+ pattern: (value_identifier)
421+ body: (function
422+ parameter: (value_identifier)
423+ body: (binary_expression
424+ left: (number)
425+ right: (call_expression
426+ function: (value_identifier)
427+ arguments: (arguments
428+ (value_identifier))))))))))))
376429
377430================================================================================
378431Functor signature
0 commit comments