Saya sedang membangun simulator yang mem-parsing beberapa peristiwa dari STDIN
dan "menjalankan" mereka. Latar belakang saya sebagian besar pemrograman fungsional hari ini, jadi sepertinya wajar untuk melakukan sesuatu seperti ini:
data Event = Thing1 String Int | Thing2 Int | Thing3 String String Int
Parse :: String -> [Event]
Simulate :: [Event] -> [Result]
di mana akan mensimulasikan
case event
of Thing1 a b => compute for thing one
| Thing2 a => compute for thing two
dll. Apa cara idiomatis untuk melakukan hal semacam ini di Jawa? Googling telah menunjuk saya ke arah kelas bersarang dan pola pengunjung, tetapi itu tampaknya agak berat dalam upaya saya. Penghapusan tipe sepertinya melawan saya, sulit. Bisakah Anda menunjukkan kepada saya garis besar tentang apa yang akan dilakukan dengan benar?
Event
tipe secara konseptual sama dengan memiliki satuInt
dan duaMaybe Strings
?