Io mi chiedo perchè la gente si diverta a fare gare di oscuramento del codice in C, Perl, Python o Java quando esiste OCaml…
Codice:
let rec lmn l = let rec lm l1 l2 = match l1, l2 with [], [] -> []
| _, [] -> l1 | [], _ -> l2 | x::y, _ -> x :: (lm y l2) in match l
with [] -> [] | [x] -> x | x::y -> lm x (lmn y);;
Risultato: fare il merge di due liste
# lmn [1;2;3];[4;5];[6;7];[8;9;10]];;
- : int list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
Quanto mi piace il laboratorio di Metodi 1 ![]()



8 Comments
il bello è che la stessa cosa si può fare con la funzione concat del modulo List
# List.concat [[4;6];[5;9];[1;2;3]];;
- : int list = [4; 6; 5; 9; 1; 2; 3]
Lol.
$ python
>>> [1,2,3] + [4,5] + [6,7] + [8,9,10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
comunque la mia soluzione senza barare è questa guiduzzo
let rec append (l:int list list)=
match l with
[] -> []
|x -> x
|x::rest -> x @ append(rest);;
forse è un po più umana
semmai:
let rec append (l:int list list)=
match l with
[] -> []
|[x] -> x
|x::rest -> x @ append(rest);;
comunque non vale! non ricordavo piu' l'uso dell'operatore chiocciolina!! se no la mia si riduceva drasticamente, x' in realtà la mia funzione è:
let rec lmn l =
let rec lm l1 l2 =
match l1, l2 with
[], [] -> []
| _, [] -> l1
| [], _ -> l2
| x::y, _ -> x :: (lm y l2)
in match l with
[] -> []
| [x] -> x
| x::y -> lm x (lmn y);;
dove appunto la lm fa' quello che avrei potuto fare con la @ :/
X Ema:
dopo che davis ha scoperto la @ possiamo fare anche noi cosi':
# [3;4] @ [5;6] @ [7;8];;
- : int list = [3; 4; 5; 6; 7; 8]
xo' non è ricorsivo, obfuscato, con pattern matching, QUINDI NON FA' FIGO
ehy tha, sono pedrag.
è da un po' che non ci si sente
procede tutto bene?
un saluto
Ma perche non uscite un pò più spesso di casa, e non andate magari a puttane che vi farebbe bene. invece di scrivere ste cagate?
io ho la tracheobronchite!