From b0fbef3c3bf38ea1159421f582bd979bd9a049f3 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Sun, 23 May 2021 14:21:13 +0530 Subject: Add tutorial. * doc/ccwl.texi (Tutorial): New chapter. (Top): Link to "Tutorial" node from menu. --- doc/ccwl.texi | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/doc/ccwl.texi b/doc/ccwl.texi index 60d1731..6e1a96d 100644 --- a/doc/ccwl.texi +++ b/doc/ccwl.texi @@ -23,6 +23,7 @@ Workflow Language} workflows. @menu * Introduction:: What is ccwl? +* Tutorial:: A quick tutorial to get started with ccwl * Contributing:: Contributing @end menu @@ -42,6 +43,59 @@ ccwl is a compiler to generate CWL workflows from concise descriptions in ccwl. In the future, ccwl will also have a runtime whereby users can interactively execute workflows while developing them. +@node Tutorial +@chapter Tutorial + +This tutorial will introduce you to writing workflows in ccwl. Some +knowledge of CWL is assumed. To learn about CWL, please see the +@url{https://www.commonwl.org/user_guide/, Common Workflow Language User +Guide}. + +@menu +* Important concepts:: Static typing, multiple named inputs and outputs +@end menu + +@node Important concepts +@section The CWL and ccwl workflow languages + +The CWL and ccwl workflow languages are statically typed programming +languages where functions accept multiple named inputs and return +multiple named outputs. Let's break down what that means. + +@subsection Static typing + +In CWL, the type of arguments accepted by a function and the type of +outputs returned by that function are specified explicitly by the +programmer, and are known at compile time even before the code has been +run. Hence, we say that it is statically typed. + +@subsection Positional arguments and named arguments + +In many languages, the order of arguments passed to a function is +significant. The position of each argument determines which formal +argument it gets mapped to. For example, passing positional arguments in +Scheme looks like + +@lisp +(foo 1 2) +@end lisp + +In a language that supports named arguments, the order of arguments is +not significant. Each argument explicitly names the formal argument it +gets mapped to. For example, in Scheme, passing named arguments may look +like + +@lisp +(foo #:bar 1 #:baz 2) +@end lisp + +@subsection Multiple function arguments and return values + +In most languages, functions accept multiple input arguments but only +return a single output value. However, in CWL, a function can return +multiple output values as well. These multiple outputs are unordered and +are each addressed by a unique name. + @node Contributing @chapter Contributing -- cgit v1.2.3