Kohët e fundit kam filluar të kodoj në ocaml dhe kjo gjuhë programimi është e ndjeshme kur bëhet fjalë për përcaktimin e asaj që dua të kthejë një funksion. Dua të shkruaj një funksion që përdor 2 lista si parametra (që supozohet të jenë në rend rritës dhe me elementë të tipit int) dhe kthen një listë që përmban të gjithë elementët e 2 listave të para, gjithashtu në rend rritës.
Ja çfarë kam arritur të arrij deri tani:
let inter l1 l2 =
let rec aux l1 l2 l3=
if List.hd l1<List.hd l2 then aux (List.tl l1) l2 (List.hd l1 :: l3)
else (if List.hd l1>List.hd l2 then aux l1 (List.tl l2) (List.hd l2::l3)
else (if l1 = [] then List.fold_left (fun x y -> y::x) l3 l2
else if l2=[] then List.fold_left (fun x y -> y::x) l3 l1
))
in List.rev (aux l1 l2 []);;
Por kur e përpiloj, më kthen këtë mesazh gabimi:
Error: This expression has type 'a list
but an expression was expected of type unit
Kur telefonoj funksionin, funksionon mirë, por funksionon ashtu siç pritej, por ajo që më shqetëson është mesazhi i gabimit. Ndonjë ide pse shfaqet?
PS: Unë përdor Emacs - Tuareg Mode si një redaktues teksti dhe përpilues.
List.hd
. Pasi të jeni mësuar të përdorni modele, është mirë ta rishikoni këtë rregull dhe herë pas here të përdorniList.hd
kur është me të vërtetë zgjedhja më e mirë, sigurisht. 15.10.2016