I am a novice in Prolog. Recently I saw a piece of code. I want to know the meaning of some parts of it and how to use it.
the code as below:
MatrixTconcat([]) --> [].
matrix_tconcat([Cs|Css]) -->
   row_rows_rest_(Cs,Css,Mss),
   matrix_tconcat(Mss).
first, what's the meaning of -->?
second, why MatrixTconcat starts with a capital letter while matrix_tconcatstarts with a lower one? what the difference between them?
here is another piece of code:
RowRowsRest([],Css,[]) -->
   { emptylists(Css) }.
row_rows_rest_([X|Xs],Xss,[Xs|Mss]) -->
   [X],
   nonemptyrows_rest(Xss,Mss).
what are { and } in prolog used for, and how to use it?