Overview¶
Workspace¶
The MnL workspace is divided into Menu, Toolbox and Top-level block, and Playground.

Fig. 1: Workspace
Menu¶
File: start a new workspace, save and download blocks on the Playground, or upload and load blocks into the Playground.
Theme: change the workspace theme to dark or light mode.
Basic Example: load basic examples such as the identity and recursive functions, etc.
Advanced Example: load an advanced example such as the filter, fold, or fmap function.
Program Visualization and Transpiler: show/ hide window of the function value, beta reduction, or transpiler.
Usage: go to the user guide website.
Toolbox and Top-level block¶
Toolbox icon: clickable icon to show or hide toolbox.
Search: search block by name.
Top-level block: used as the parent block for the program construction..
Playground¶
Trash: hold all deleted blocks.
Zoom in/out: Zoom in/ out of the play area.
Rest: reset the play area position.
Play Area: holds all blocks.
Toolbox¶
Toolbox groups the blocks based on the language grammar. To show the block in the category, click the category. There are seven categories on the top; the other seven below are part of the expression. The user can also search the block from the search box located at the bottom of the toolbox.

Fig. 2: Toolbox
Block Anatomy¶

Fig. 3: Horizontal input/output block

Fig. 4: Vertical input/output + horizontal input block
Gear Icon: show the add/remove input block toolbox.
Exclamation Mark Icon: Debugger, shows the error message.
Question Mark Icon: The Info shows the block information: block category, type, and value.
Suggestion Box Color: shows the colors of blocks that can be connected.
The Input Notch: shows the shape of the required output notch to attach to the block.
The Output Notch: used as a hook to another block.
Add/Remove Input¶
The number of input blocks on some blocks can be adjusted dynamically using the add/remove toolbox or add/remove icon.

Fig. 5: Add/remove input toolbox

Fig. 6: Add/remove input using icon
Block Info¶
The Info shows block information such as block category based on the grammar, value type (term type), and value.

Fig. 7: The Info
The Shape and Color¶
The shape of the input/output notch of the block represents the non-terminal of the grammar. The block color represents the term type, such as blue for function, yellow for number, etc..
Debugger¶
The debugger shows the requirement to make a complete block (1) or the term-type error.
A complete block is a block with all requirements fulfilled, ex.: Fig.7 The Info.

Fig. 8: Debugger