DIGIT-ARC read-only archive · snapshot: July 23, 2026

Anyone knows Ocaml???

4 posts · originally from https://geek.digit.in/community/threads/anyone-knows-ocaml.95208/

neelu09
neelu09 Original post #1
Aug 9, 2008 at 3:22 PM
i need some help with ocaml programm...can anyone help
i have to write a programme which will tell whther a date is valid or not
i have written
let datevalid : int*string -> bool = function
(d,m) -> if (d>31 || d<1 || m<>"January"||m<>"February"||m<>"March"||m<>"April"||m<>"May"||m<>"June"||m<>"July"||m<>"August"||m<>"September"||m<>"October"||m<>"November"||m<>"December") then false
else if (d>28 && m="February") then false
else if (d=31 && (m<>"January"||m<>"March"||m<>"May"||m<>"July"||m<>"August"||m<>"October"||m<>"December")) then false
else true
;;


but this function gives false for valid dates also please help
C
Aug 11, 2008 at 11:20 AM
I have never worked on Ocaml. But I guess || stands for "or" and && stands for "and" in it just like other C-like languages. If that is true you have an error in your logic.

Try this code instead.

Code:
let datevalid : int*string -> bool = function
(d,m) -> if ((d>31 || d<1) || (m<>"January"&&m<>"February"&&m<>"March"&&m<>"April "&&m<>"May"&&m<>"June"&&m<>"July"&&m<>"August"&&m< >"September"&&m<>"October"&&m<>"November"&&m<>"December")) then false
else if (d>28 && m="February") then false
else if (d=31 && m<>"January" && m <> "March" && m <>"May" && m<>"July" && m <>"August" && m<>"October" && m<>"December") then false
else true
;;


Note:
You are also not considering leap years when checking for February.
neelu09
neelu09 #3
Aug 14, 2008 at 11:46 AM
nah it still says syntax error...anyway thanks for reply....
C
Aug 14, 2008 at 12:28 PM
nah it still says syntax error...anyway thanks for reply....
As I said, "I have never worked on Ocaml". So syntax errors are possible.

I just gave the corrected logic.