A Primitive Compiler from 
$ lamc [EXAMPLE_ID] [(-c|--direct-c) (-o|--output OUTPUT_FILE) | [--am]]
For details of each option, please check lamc --help.
optparse-applicative.
To use that, users can check their documentation about autocompletion.
Currently, this repository implements a primitive compiler from Call-By-Value 
-  Frontend Parser for 
$\lambda$ -calculus -  Bidirectional type-checker for 
$\lambda$ -calculus -  Local 
$\lambda$ -calculus optimization pass -  Call-By-Value 
$\lambda$ -calculus-To-CBPV pass -  Call-By-Name 
$\lambda$ -calculus-To-CBPV pass -  Call-By-Need 
$\lambda$ -calculus-To-CBPV pass - Arity analysis
 - Type-checker for CBPV
 - Local CBPV optimization pass
 - Tail call optimization pass (or lowering pass)
 - CBPV-to-C pass without GC
 - CBPV-to-AM pass without GC
 - AM interpreter
 - AM-to-C pass without GC
 - GC runtime function
 - GC instruction in CBPV-to-C
 - GC instruction in CBPV-to-AM
 - PrintInt effect
 - PrintDouble effect
 - PrintString effect
 - Read effect
 - Exception-handling effects
 - General I/O effect
 - Simple module system