Introduction: List is a collection of
related values. It is same as linked list data structure used in other
languages. List allows us to link data together to form a chain. List plays an
important role in functional programming. It can be an Empty list, List of fixed values or a list value concatenated to it. The below table shows the primitive
constructs for building lists.
Expression |
Description |
[ ] |
For empty List |
[value1;...;valuen] |
List element |
Exp::Exp
|
concatenate
element with a List. Two colons (::), pronounced as "cons" here. |
[exp .. exp] |
A range of
Integers |
[for X in List
-> exp] |
A generated
List |
exp @ exp |
Concatenates
two Lists |
Defining List:
Empty List: An empty List is represented by a square bracket(
[ ] ).
Syntax:
let listname=[]
Like,
let
emptylist= [ ]
List With Fix Elements: A simple list is defined with an element in square brackets. The list elements are
separated with semicolons.
Syntax:
let simplelist=[element1;element2;elementn]
Like,
let
simplelist= [1;2;3;4;5 ]
let simplelist=['A';'B';'C';'D';'E']
let simplelist=["AAA";"BBB";"CCC"]
Or, We can also put line breaks among list element. Semicolon are optional
here.
Like, let simplelist=[
element1
element2
elementn]
Example,
let
simplelist= [1
2
3]
We write the following code
let
simplelist1= [1;2;3;4;5 ]
let
simplelist2=[1
2
3
4
5]
printfn "%A" simplelist1
printfn "%A" simplelist2
The output will look like below:
List with 'cons'
operation: Elements can be concatenated to the front of list by built-in
operator ( :: ). This is pronounced as 'cons'. Like, if there is a
list as listone with element 2,3,4,5 and we want another list with values 1 and
values of listone. Then we use this operator. Like below
let listone=
[2;3;4;5]
let
listtwo=1 :: listone
We write the following code to
understand it.
let listone=
[2;3;4;5]//first list
let listtwo=1 ::
listone//using 'cons'
printfn "%A" listone
printfn "%A" listtwo
Then run the program by pressing Ctrl+F5, The
output will look like below
Range: We can
also define a list with range indication. List elements are defined with assigning
lower and upper bounds. We can also add a third element as a step in the square bracket to
increment by fixed value. Although it is optional. its syntax is given below
let listname=[lower_bound..step..upper_bound]
Now we write the following code
let
list1= [1..10 ]
let
list2=[1..2..20]
printfn "%A" list1
printfn "%A" list2
The output will look like below:
List With Sequence Expression: We can also construct a list using sequence
expression. We write the following code for creating a list of numbers 1 to
10 using sequence expression.
let
list1= [for i in
1..10 -> i ]
printfn "%A" list1
The output will look like below:
Concatenation of Two Lists: Two lists can be concatenated with the @ operator. For
this, List should be of a compatible type. We write the following code for
concatenation of two list list1 and list2 as list3.
let
list1= [1;2;3;4;5]
let
list2=[6;7;8;9;10];
let list3=list1
@ list2
printfn "%A" list1
printfn "%A" list2
printfn "%A" list3
Output will look like as below
figure