å®¶ã®è¥¿
ããªãã¯ãã¯ã€ãããŒãã®è¥¿ã«ãããªãŒãã³ãã£ãŒã«ãã«ç«ã¡ãæ£é¢çé¢ã«ä¹ã蟌ã¿ãŸããã
ããã«ã¯å°ããªã¡ãŒã«ããã¯ã¹ããããŸãã
>ã¡ãŒã«ããã¯ã¹ãéã
å°ããªã¡ãŒã«ããã¯ã¹ãéããšããªãŒãã¬ããã衚瀺ãããŸãã
>ãªãŒãã¬ãããèªã
ïŒãã€ã±ã³ïŒ
ZORKãžããããïŒ
ZORKã¯ãåéºãå±éºãããã³cãªã²ãŒã ã§ãã ãã®äžã§ãããªãã¯äººéã«ãã£ãŠãããŸã§ã§æãé©ãã¹ãé åã®ããã€ããæ¢æ€ããŸãã ã³ã³ãã¥ãŒã¿ã1ã€ããªããã°ãªããŸããïŒã
å
容ïŒ
ãããã€ããŒã1-å
ããŒã2-ãã©ã¬ã¹ãããŒã3-ããªã¢ãããŒã4-ãã£ããªã³ã®ãã¥ãŒããŒã5-ããŒã«ããŒã1
Haskellèšèªã®ãã¹ãŠã®åºæ¬ãç¥ãããšã¯ã§ãããã¯ãšã¹ãã«åœ¹ç«ã€1ã€ã®é¢æ°ãæžãããšãã§ããŸããã
ã ãããããªãã¯äžçªæåã«ãéãããã¢ã®åã«ç«ã£ãŠãããªãã¯éµäŸ¿åããèŠãŸãã
Haskellã¯ããã°ã©ãã³ã°ã«å€ããå¿
èŠãšããŸããã ãŸã第äžã«ã欲æã ã€ã³ã¿ããªã¿ãšã³ã³ãã€ã©ã圹ã«ç«ã€ãããããŸããã GHCã³ã³ãã€ã©ïŒGlasgow Haskell CompillerïŒãHaskell Platform for Windowsã®äžéšãšããŠäœ¿çšããŸãããããã¯åã«äŸ¿å©ã ããã§ãã ïŒLinuxã䜿çšããŠããå Žåãã¢ããã€ã¹ã¯å¿
èŠãããŸããããã¹ãŠãæ©èœãããæ¹æ³ã¯ç§ãããããç¥ã£ãŠããŸããïŒã€ã³ã¹ããŒã«ã¯ç°¡åã§ãã
ããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŠãã ããã ã€ã³ã¹ããŒã«åŸãghciã³ãã³ããå®è¡ããŸãã èŠã€ãããªãå Žåã¯ãPATHã«ãã©ã«ã㌠"... \ Haskell Platform \ xyz0 \ bin \"ã远å ããŸãã Haskellã³ãŒãã¯ã* .hsããã¡ã€ã«ã«ä¿åãããŸãã HugIDEãŸãã¯ã¡ã¢åž³++ïŒç§ãšåãããã«ïŒã§äœæã§ããŸãã Haskellãã©ãããã©ãŒã ãã€ã³ã¹ããŒã«ãããšã* .hsãã¡ã€ã«ãGHCiã€ã³ã¿ãŒããªã¿ãŒã«é¢é£ä»ããããŸããããã¯ãåŸã§èŠãããã«éåžžã«äŸ¿å©ã§ãã Hackageã®ãã¹ãŠã®é·æã®å·šå€§ãªãªããžããªãããŠã³ããŒãããããšãã§ããŸããããã«ã¯ãç°¡åãªã²ãŒã advgameããããŸãã 圌女ã¯ãèªåèªèº«ãæžãäžã§ç§ã«ãšã£ãŠã¿ã€ããšåºæºç¹ã§ããã
ã¯ãšã¹ãçšã®ãã©ã«ããŒãäœæããŸãã 空ã®QuestMain.hsãã¡ã€ã«ãäœæããŠå®è¡ããŸãã GHCiã€ã³ã¿ãŒããªã¿ãŒã®ã³ã³ãœãŒã«ã衚瀺ãããŸããããã¯ãããã°ã«åœ¹ç«ã¡ãŸãã GHCiãããã€ãã®ã©ã€ãã©ãªãããŒããã1ãã¡ã€ã«ã®ãã¡1ãââã¡ã€ã«ãæ£åžžã«ã³ã³ãã€ã«ãããOKãããŒããããã¢ãžã¥ãŒã«ïŒMainããšè¡šç€ºãããŸããã³ãã³ãããã³ããã§ã* Main>ããšå
¥åããŸãã ããããããããããã°ã©ã ãäœæããŸããã æ¬¡ã«ããã®ããŒã«ãå°ã調ã¹ãŠãåŸã§ããã°ã©ã ã®ãããã°ãç°¡åã«ãªãããã«ããŸãã
*ã¡ã€ã³> 4
4
*ã¡ã€ã³> 2 + 4-7
-1
*ã¡ã€ã³> 9 / ïŒ 2 * 5.0 ïŒ
0.9
*ã¡ã€ã³> ïŒ - 1 ïŒ + 4
3
*ã¡ã€ã³> 7 == 7
æ¬åœ
*ã¡ã€ã³> -5 > 0
åœ
æ°åŠé¢æ°ã䜿çšã§ããŸãïŒsin xãcos xãtan xãatan xãabs xã
*ã¡ã€ã³> sin 10 * sin 10 + cos 10 * cos 10
1.0
*ã¡ã€ã³> sin ïŒ 2 * cos 10 ïŒ + tan 5
-4.374758876543559
Haskellã¯å€§æåãšå°æåãåºå¥ããèšèªã§ãïŒC ++ãJavaãªã©ïŒã ããªãã¯åžžã«cOSæ©èœãæãã§ããããšãç¥ã£ãŠããŸãããããã§ã¯ãããŸããã ãcosãã®ã¿ããããŸãã
*ã¡ã€ã³> cos ïŒ cos ïŒ cos 0.5 ïŒ ïŒ
0.8026751006823349
*ã¡ã€ã³> cos pi
-1.0
ããã¯ãã¹ãŠäºæ³ãããçè§£ã§ããããšã§ãã piã¯ãæ°piãè¿ã颿°ã§ãããåŒæ°ã¯ãããŸããã äžè§é¢æ°ã¯1ã€ã®åŒæ°ãåãåããŸãã è€æ°ã®åŒæ°ãæã€é¢æ°ã¯ã©ãã§ããïŒ æ§æã¯åçŽã§ãïŒæåã«é¢æ°ã®ååãæ¬¡ã«åŒæ°ã è§ãã£ããã³ã³ãããŸãã¯ã»ãã³ãã³ãªãã
*ã¡ã€ã³> logBase 2 2
1.0
*ã¡ã€ã³> logBase ïŒ sin 2 ïŒ 2
-7.28991425837762
2çªç®ã®äŸã§ã¯ãsin 2ããã£ãã§å²ã¿ããããlogBase颿°ã®ïŒ1åŒæ°ã«ãªãããã«ããããšãéèŠã§ãã ãããè¡ãããªãå Žåãã€ã³ã¿ããªã¿ã¯2ã€ã®ä»£ããã«3ã€ã®åŒæ°ïŒsinã2ã2ïŒãlogBase颿°ã«æž¡ãããšèŠãªããèªããŸãïŒ
*ã¡ã€ã³> logBase sin 2 2
<ã€ã³ã¿ã©ã¯ãã£ã> ïŒ 1 ïŒ 1 ïŒ
ïŒ Floating ïŒ a0- > a0 ïŒ ïŒã® ã€ã³ã¹ã¿ã³ã¹ã¯ãããŸãã
' logBase 'ã®äœ¿çšã«èµ·å ãã
èããããä¿®æ£ïŒ ïŒ Floating ïŒ a0- > a0 ïŒ ïŒã® ã€ã³ã¹ã¿ã³ã¹å®£èšã远å ããŸã
åŒå
ïŒ logBase sin 2 2
ãitãã®æ¹çšåŒïŒit = logBase sin 2 2
..................
圌ãç§ãã¡ã«èšã£ãããšã¯ãç§ãã¡ã¯ãŸã ããã«ã€ããŠèããŸããã ããã¯ç宀ã®åé¡ã§ã¯ãªãããã£ãšéèŠãªåé¡ããããŸãã
æ°åŠçãªæ©èœãå«ããã®ä»ã®æ©èœã¯ãHaskellãã©ãããã©ãŒã ã«ããä»å±ããã¥ã¡ã³ãïŒãGHCã©ã€ãã©ãªããã¥ã¡ã³ããïŒã«ãããŸãã ããã©ã«ãã§ã¯ãPreludeã¢ãžã¥ãŒã«ã«ãããã¹ãŠã®æ©èœã䜿çšå¯èœã§ãã ãã®ã¢ãžã¥ãŒã«ãããŒãããªãã£ããããèªäœãããŒãããŸããã 眪ãã³ã¹ããã®ä»ãå®çŸ©ãããŠããŸãã Preludeã«ã¯äŸ¿å©ãªæ©èœã倿°å«ãŸããŠããŸãããããã¯æãé »ç¹ã«äœ¿çšãããããããŸãšããããŠããŸãã Preludeã®ããã¥ã¡ã³ãããã§ãã¯ãããšã次ã®ãããªç°åžžãªãå¥åŠãªæ§æã衚瀺ãããŸãã
åèª :: æåå -> [ æåå ]
ãŸãã¯ãããïŒ
Eq a => Eq ïŒ ãã¶ã a ïŒ
åãããŸãããïŒ äœããç§ãã¡ã¯ãããçè§£ããŸããã
äœãããããŸãããå°ãã ãè¡ãäœã£ãŠã¿ãŸãããã Haskellã®æååã¯ãäºéåŒçšç¬Šå
ã®CïŒæåãšåãããã«èŠããŸãã ç¹æ®æå\ nïŒãæ¹è¡ãïŒãæ©èœããŸãã
*ã¡ã€ã³> ãããã«ã¡ã¯ãäžçïŒã
ãHello worldïŒã
*ã¡ã€ã³> ãããã«ã¡ã¯ã \ nã¯ãŒã«ãïŒã
ãããã«ã¡ã¯ã \ näžçïŒã
ããŸããããªãã£ãã®ã¯?? A. ghciã§è¡ãæžããšããåçŽã«ãããç¹°ãè¿ããŸãã åæ§ã«ãåäžã®æ°åãŸãã¯Trueãç¹°ãè¿ããŸãã
*ã¡ã€ã³> 1,000,000
1,000,000
*ã¡ã€ã³> True
æ¬åœ
ããã¯ghciãããã°åºåã§ãããããåŒã³åºããŸãããã è¡ãçªå·ãå®éã®ã³ã³ãœãŒã«ã«ãŸã éä¿¡ãããŠããŸããã å®éã®ã³ã³ãœãŒã«ã§å°å·ããè¡ãéä¿¡ããŸãããïŒ
* Main > putStrLn "ããã«ã¡ã¯ã \ nã¯ãŒã«ãïŒ"
ããã«ã¡ã¯
äžçïŒ
ããŠãputStrLn颿°ã¯æååãåãå
¥ããå®éã®ã³ã³ãœãŒã«ã«åºåããŸããã ghciã¯çµæãåçŸããŸããã æžã蟌ã¿ïŒputStrLnãæååãåãå
¥ããç»é¢ã«è¡šç€ºããŸãã ã++ãæäœã§æ¥ç¶ããããšã«ããã2è¡ãåºåã§ããŸãã
* Main > putStrLn ïŒ "HelloãworldïŒ" ++ " \ nããã«è¡ããŸãïŒ" ïŒ
ãããŒã¯ãŒã«ãïŒ
è¡ããïŒ
ghciãæ£ãããªãããã«ãã©ã±ãããå¿
èŠã§ãã æ¬åŒ§ããªããã°ãåœŒã¯æåéãæ¬¡ã®ããšãèããã§ãããïŒ
putStrLn "ããã«ã¡ã¯ãäžçïŒ" ++ "\ nããã«è¡ããŸãïŒ" <=>ïŒputStrLn "HelloãworldïŒ"ïŒ++ïŒ "\ nHere we goïŒ"ïŒ
ã³ã³ãœãŒã«ã«string1 add string2ã远å ããããšããŠãããããããã¯åŸ
ã¡äŒãã§ãã åºåã«æååã远å ããã«ã¯ã©ãããã°ããã§ããïŒ äžæ£è¡çºã®å
å®¹ã¯æ¬¡ã®ãšããã§ãã
* Main > putStrLn "HelloãworldïŒ" ++ " \ nããã«è¡ããŸãïŒ"
<ã€ã³ã¿ã©ã¯ãã£ã> ïŒ 1 ïŒ 1 ïŒ
æåŸ
ãããã¿ã€ã [ a0 ]ãå®éã®ã¿ã€ã ' IO ïŒ ïŒ 'ãšäžèŽãããããšãã§ããŸããã§ãã
' putStrLn 'ã®åŒã³åºãã®æ»ã å
æåã®åŒæ° ' ïŒ ++ ïŒ ' ã§ã¯ãã€ãŸã
' putStrLn â HelloãworldïŒâ '
åŒå
ïŒ putStrLn "HelloãworldïŒ" ++ " \ nããã«è¡ããŸãïŒ"
ã³ã³ãœãŒã«ãžã®2ã€ã®åºåãå ç®ãããŸããã ããã«ããã€ãã®èª€ã£ããªãã·ã§ã³ïŒ
* Main > putStrLn "HelloãworldïŒ" ++ putStrLn " \ n ã©ãã ïŒ"
* Main > putStrLn "HelloãworldïŒ" PutStrLn " \ nããã«è¡ããŸãïŒ"
* Main > "HelloãworldïŒ" ++ putStrLn " \ n ã©ãã ïŒ
putStrLn颿°ããŸã£ãããªãå Žåã®ãªãã·ã§ã³ã¯æ©èœããŸããããå®éãã§ã¯ãªããæååã®ãããã°åºåãååŸããŸãã ã\ nHere we goïŒããšããéšåãå¿
èŠã§ããã æ¬¡ã®ããã«ã§ã¯ãªããæ°ããè¡ããå°å·ãããŸããã
* Main > "HelloãworldïŒ" ++ " \ nããã«è¡ããŸãïŒ"
ãããã«ã¡ã¯ïŒ \ nããã«è¡ããŸãïŒã
誀ã£ããªãã·ã§ã³ã®ãããããå®äºããããšããããšã§ãghciãããªããã©ãæãããç¥ãããšãã§ããŸãã ç§ãã¡ã¯çããããã®ã€ã³ã¿ãŒããªã¿ãŒãšã³ã³ãã€ã©ãŒã®ããã£ãã¹ãç¥ã£ãŠããŸãïŒ..ããããç§ãã¡ã®äžçã«äœãã§ããªããã®ããã«ãæ£ç¢ºã§æ£ç¢ºãªãã®ã ããäžããŠãã ããã
ãŸããå®éã«ããã§ãã Haskellã«ã¯ç¬èªã®äžçãšç¬èªã®æ³åŸããããŸãã æ³åŸã§ã¯ãåŒã®ã¿ã€ããæ£ããããšãå¿
èŠã§ãã Haskellã¯éåžžã«åŒ·ãåä»ããããèšèªã§ãã 颿°ããã©ã¡ãŒã¿ãŒãåŒ-ãã¹ãŠã«ç¹å®ã®ã¿ã€ãããããŸãã ç°ãªãã¿ã€ãã®ãã©ã¡ãŒã¿ãŒãå¿
èŠãªå Žåããã©ã¡ãŒã¿ãŒã颿°ã«æž¡ãããšã¯ã§ããŸããã å®éã®ã³ã³ãœãŒã«ã§æ°åãå
¥åããŠã¿ãŠãã ããã
*ã¡ã€ã³> putStrLn 5
<ã€ã³ã¿ã©ã¯ãã£ã> ïŒ 1 ïŒ 10 ïŒ
ïŒ Num String ïŒã® ã€ã³ã¹ã¿ã³ã¹ã¯ãããŸãã
ãªãã©ã«ã 5 ãããçãã
èããããä¿®æ£ïŒ ïŒ Num String ïŒã® ã€ã³ã¹ã¿ã³ã¹å®£èšã远å ããŸã
' putStrLn 'ã®æåã®åŒæ°ãã€ãŸã ' 5 '
åŒå
ïŒ putStrLn 5
ãitãã®æ¹çšåŒïŒit = putStrLn 5
éèš³è
ãäœãã«ã€ããŠããªãã¿ã®å®£èªãããŠããã®ãããããŸãã putStrLn颿°ã¯ãæååïŒStringåïŒã®ã¿ãå¿
èŠãšããŸãããæ°å€ãåãåããŸãã ã¿ã€ããäžèŽããŸããã=>ç«¶åããããŸãã ãããè¡ãããšãã§ããŸãïŒ
* Main > putStrLn ïŒ show 5 ïŒ
5
show颿°ã¯ãå¯èœã§ããã°ãåŒæ°ãæååã«å€æããputStrLnã䜿çšããŠåºåããŸãã 颿°ïŒshow 5ïŒãå®è¡ãããšãæååã5ããååŸãããããã«ã次ã®ããã«å
¥åããŸãã
* Main > putStrLn ïŒ "String and" ++ ïŒ show 5 ïŒ ++ " \ n-åã³æååã" ïŒ
ã¹ããªã³ã° ãš 5
-åã³æååã
show颿°ã¯ãå€ãã®ã¿ã€ããæååã«å€æã§ããŸãã 圌女ã¯ã¯ãšã¹ãã§éåžžã«åœ¹ç«ã¡ãŸãã
* Main > putStrLn ïŒ "sin ^ 2 5 + cos ^ 2 5 =" ++ show ïŒ sin 5 * sin 5 + cos 5 * cos 5 ïŒ ïŒ
sin ^ 2 5 + cos ^ 2 5 = 0.9999999999999999
ãã¡ãããputStrLnãåæ§ã«äŸ¿å©ã§ãã çè«çã«ã¯ãPascalããã·ãŒãžã£writeLnãäœãè¿ããªããããäœãè¿ãã¹ãã§ã¯ãããŸããã ããããHaskellã§ã¯ã颿°ã¯åžžã«äœããè¿ããŸãã ããã確èªããŠãã ããïŒ ghciã§ããã€ãã®ãŠãŒãã£ãªãã£ã³ãã³ããå
¥åã§ããŸãããïŒtãïŒãïŒtypeãïŒã³ãã³ãã¯ãåŒã®ã¿ã€ãã衚瀺ããŸãã
*ã¡ã€ã³> ïŒt 3 == 3
3 == 3 :: ããŒã«
*ã¡ã€ã³> ïŒt 3 / = 3
3 / = 3 :: ããŒã«
* Main > ïŒãfããšå
¥åããŸã
'f' :: Char
* Main > ïŒ ãI am a stringããšå
¥åããŸã
ãç§ã¯æååã§ãã :: [ Char ]
ããã§ãåŒã¯ç¹å¥ãªçš®é¡ã®é¢æ°ãšèŠãªãããšãã§ãããããããã©ã¡ãŒã¿ãŒãåãåãããå¿
ç¶çã«çµæãè¿ããŸãã putStrLn颿°ã¿ã€ãã¯æ¬¡ã®ããã«ãªããŸãã
*ã¡ã€ã³> ïŒt putStrLn
putStrLn :: æåå -> IO ïŒ ïŒ
ãã®åœ¢åŒã®èšè¿°ïŒæ°åŠãä»ã®é¢æ°åèšèªïŒã«åºäŒã£ãŠããªãå Žåã¯ãããããç§ã«ãšã£ãŠã¯ãã€ãŠãªãã£ãããã«ãå°ãçããã§ãããã ããããããã«è¯ããã®ã«æ
£ããHaskellã®åãåãããã«åªããŠããŸãã ã»ãšãã©ã®å Žåãããããæå®ããå¿
èŠã¯ãããŸãããHaskellã¯ããããèªåã§åé€ããã©ããã§äžèŽããªããã®ãããã°æã§è
ãããããŸãã ç§ãã¡ã¯ãŸã åºæ¬çãªã¿ã€ããããã¹ãŠã®çš®é¡ã®ãã¶ã€ã³ãèŠãŠããŸãããããŠãããªãã¯ãããã©ãã»ã©äŸ¿å©ã§ããããæããã§ãããã ãã¹ãŠã®å€æ°ãå¿
èŠãªäžéšã®C ++ãšã¯ç°ãªããåèŠçŽ ãèšè¿°ããããã€ã³ããããç»é²ãããŠããŸã...
ãã®å ŽåãputStrLnã¯StringãåããIOïŒïŒãè¿ããŸãã ã³ãã³ã¯ã颿°ã®ååãšãã®ã¿ã€ããåºåããŸãã ãputStrLnã«ã¯StringããIOïŒïŒãŸã§ã®åããããŸãããšèªãã®ãæ£ããã§ãããã æååã¯ãå
¥åæååã®ã¿ã€ãã§ãã ãIOïŒïŒããšå
¥åããŸã-å
¥åºåã®äžå¯æ¬ ãªéšåïŒå
¥å/åºåãããªããæšæž¬ããïŒã ã¿ã€ããIOïŒïŒãã¯ãputStrLn颿°ãããã°ã©ã ã®ãã¯ãªãŒã³ã§ãªããé åã«ãµããããšã瀺ããŸãã ãã®ãšãªã¢ã§ã¯ãçœå®³ã§ãäœã§ãèµ·ããåŸãŸããç§ãã¡ã¯ããã«ã€ããŠæ
éã«èããªããã°ãªããŸããã ããããä»ã®ãšãããç§ãã¡ã¯äœãèããå¿
èŠããªããIOïŒïŒã«è¿·æããããããŸããã 倧æšäºãçºçããªã颿°ãå¯äœçšãçºçããªã颿°ãèšè¿°ããããšããŸãã
ãããã¯ãçŽç²ãªæ±ºå®è«ãšåŒã°ããŸãããã®ãããªé¢æ°ã¯ãåãåŒæ°ã«å¯ŸããŠåãå€ãè¿ãå¿
èŠããããŸãã Haskellèšèªã¯ããŸãã«ãã®æŠå¿µã®ããã«çŽç²ãªé¢æ°åèšèªã§ãã ãã¡ãããããã§ã¯ãç°ãªãåŒã³åºãã§ç°ãªãçµæãåŸãããšãã§ãã颿°ïŒããšãã°ãç䌌乱æ°ãžã§ãã¬ãŒã¿ãŒïŒãã©ãåŠçããããšããçåãçããŸãã ãããŠãããŒã¿ã倿Žããæ¹æ³ã¯ïŒ ã¡ã¢ãªãæäœããæ¹æ³ã¯ïŒ ããŒããŒãå
¥åã®èªã¿æ¹ çµå±ã®ãšãããããã¯ãã¹ãŠé決å®è«ã«ã€ãªãããŸãã Haskellã«ã¯ããããã®åé¡ããã®ä»ã®åé¡ãé©åã«è§£æ±ºããããã®ç¹å¥ãªã¡ã«ããºã ïŒãã¢ãããïŒããããŸãã ä»åŸããã®äŒè©±ã«æ»ããŸãã
ãã®ãããããã¹ããšãã£ã¿ãŒQuestMain.hsã§éããŸãã 空ããããŸãããããã¯ã»ãã®å§ãŸãããããå€ã§ãã ããã«äººéãããã§æ³³ãããã©ãŽã³ãé£ã³ãŸãã ãããŸã§ã®éã2ã€ã®æ°å€ã®ç©ãèšç®ããåçŽãªé¢æ°ãäœæããŸãã
prod x y = x * y
å²ãåœãŠãå¿ããŠãã ããïŒ Haskellã«ã¯èª²é¡ã¯ãããŸããïŒ äžã«ããã®ã¯é¢æ°å®£èšã§ãã ãçããããšã¯ãprodã2ã€ã®åŒæ°xãšyã§æ©èœããããšãæå³ããåŒx * yãšäžèŽããŸãã ãã®åŒã¯ã颿°ãåŒã³åºããšè©äŸ¡ãããŸãã ãã£ãŠã¿ãŸãããã QuestMain.hsãã¡ã€ã«ãä¿åããŸãã ãã§ã«ghciã³ã³ãœãŒã«ãéããŠããå Žåã¯ãå床å®è¡ããŸãïŒghci QuestMain.hsïŒã ã³ã³ãœãŒã«ãéããŠããå Žåã¯ã次ã®ã³ãã³ããå
¥åããŸããr-ããã«ãããghciãçŸåšã®ãã¡ã€ã«ãã€ãŸãQuestMain.hsã匷å¶çã«åèµ·åããŠã³ã³ãã€ã«ããŸãã
*ã¡ã€ã³> ïŒr
[ 1 of 1 ] Mainã®ã³ã³ãã€ã«ïŒ HïŒ\ Haskell \ QuestTutorial \ Quest \ QuestMainãHs ãè§£éæžã¿ïŒ
OK ãããŒããããã¢ãžã¥ãŒã«ïŒMain
*ã¡ã€ã³>補å 3 5
15
ããŸãããïŒ ïŒåäœããªãå Žåã¯ã倧æåãšå°æåã®åºå¥ãQuestMain.hsãä¿åãããŠãããã©ããããã®ããŒãžã§ã³ãghciã«ããŒããããŠãããã©ããã確èªããŸããïŒæ°å3ãš5ã¯ãããã倿°xãšyã«é¢é£ä»ããããŠããŸãã ã€ã³ã¿ãŒããªã¿ãŒã¯prod 3 5ãåŒ3 * 5ã§çœ®ãæããŸããããã¯èšç®ãããŸãã
*ã¡ã€ã³>補å 3 ïŒ 2 + 3 ïŒ
15
*ã¡ã€ã³>補å 3 ïŒ cos pi ïŒ
-3.0
ããã«ããã€ãã®é¢æ°ãäœæããŠãã¹ãããŸãã ïŒä»¥äžããã¡ã€ã«ã«é¢æ°ãèšè¿°ããããšã¯æå®ããªããªããŸããããghciã§ãã¹ãããŸããïŒããšãã°ã次ã®ããã«ãªããŸãã
printString str = putStrLn str
printSqrt x = putStrLn ïŒ " Sqrt of" ++ show x ++ "=" ++ show ïŒ sqrt x ïŒ ïŒ
*ã¡ã€ã³> printString "dfdf"
dfdf
*ã¡ã€ã³> printSqrt 4
Sqrt 4.0 = 2.0
*ã¡ã€ã³> printSqrt ïŒ -4 ïŒ
å¹³æ¹æ ¹-4.0 = NaN
åŸè
ã®å Žåãè² ã®æ°ã®å¹³æ¹æ ¹ã¯ãNot a Numberããšããçµæã«ãªããŸãã ãã®çµè«ãç§ãã¡ã«åãããæååãx <0ïŒããè² ã®xã«åºåããããšããŸãã printSqrt颿°ãããã€ãã®æ¹æ³ã§æžãçŽããåæã«ããã€ãã®éåžžã«æçšãªæ§æèŠçŽ ã調ã¹ãŸãã
printSqrt1 x =
x < 0ã® å Žå
次㫠putStrLn "x <0ïŒ"
else putStrLn ïŒ " Sqrt of" ++ show x ++ "=" ++ show ïŒ sqrt x ïŒ ïŒ
printSqrt2 x = case x < 0 of
True- > putStrLn "x <0ïŒ"
False- > putStrLn ïŒ " Sqrt of" ++ show x ++ "=" ++ show ïŒ sqrt x ïŒ ïŒ
*ã¡ã€ã³> printSqrt1 ïŒ -4 ïŒ
x < 0 ïŒ
*ã¡ã€ã³> printSqrt2 ïŒ -4 ïŒ
x < 0 ïŒ
çå·ã®åŸã«ãããã®ã¯ãã¹ãŠããã¹ãŠã®ãªãã·ã§ã³ïŒä»£æ¿ïŒãèæ
®ã«å
¥ããã¹ãåŒã§ãããããä»ã«ãªããã°ifã¯ã§ããŸããã ããã€ãã®ãªãã·ã§ã³ãèæ
®ããªãã£ãã倱æããå Žåã¯ãéžæè¢ãäžå®å
šã§ãããšãããšã©ãŒã衚瀺ãããŸãã
printSqrt2 x = case x < 0 of
True- > putStrLn "x <0ïŒ"
*ã¡ã€ã³> ïŒr
...
*ã¡ã€ã³> printSqrt2 ïŒ -4 ïŒ
x < 0 ïŒ
*ã¡ã€ã³> printSqrt2 10
***äŸå€ïŒHïŒ\ Haskell \ QuestTutorial \ Quest \ QuestMain ã hsïŒ ïŒ 12ã16 ïŒ - ïŒ 13ã41 ïŒ ïŒ ã±ãŒã¹ã®éç¶²çŸ
çãªãã¿ãŒã³
ãŸããã±ãŒã¹æ§æã§ã¯ãã€ã³ãã³ãïŒãã€ã³ãã³ããïŒãéèŠã§ããããšã«æ³šæããŠãã ããã ãããã¯åãã§ãªããã°ãªããŸãã-ããã¯ããã®ã¹ããŒã¹ãŸãã¯ã¿ãã«ãé©çšãããŸãã ã³ã³ãã€ã«ããŠã¿ãŠãã ããïŒ
printSqrt2 x = case x < 0 of
True- > putStrLn "x <0ïŒ"
False- > putStrLn ïŒ " Sqrt of" ++ show x ++ "=" ++ show ïŒ sqrt x ïŒ ïŒ
*ã¡ã€ã³> ïŒr
[ 1 of 1 ] Mainã®ã³ã³ãã€ã«ïŒ HïŒ\ Haskell \ QuestTutorial \ Quest \ QuestMainãHs ãè§£éæžã¿ïŒ
HïŒ\ Haskell \ QuestTutorial \ Quest \ QuestMain hsïŒ 14 ïŒ 23 ïŒ
å
¥åã§ã®ãšã©ãŒãçºçããŸãã ' -> '
倱æããã¢ãžã¥ãŒã«ãããŒããããŸããïŒãªãã
ã±ãŒã¹ã®ãã¶ã€ã³ã¯ãšãŠã䟿å©ã§ãã if-then-elseãããèªã¿ããããæ¡åŒµããããã§ãã ãã¡ããããã¹ããããäžé£ã®if-then-elseã§è¡šçŸã§ãããããæ§é ã¯åçã§ãã ç§å¯ãæããŠãã ãããã±ãŒã¹ã¯ããã«æ©èœçã§ãããããã«ããããŸãã ãããŸã§ã®éã远å ã®äŸã å°ã人工çã§ãããããã¯åé¡ã§ã¯ãããŸããïŒ
thinkAboutSquaredX x = ã±ãŒã¹ x
0.0 -> ã0 * 0 = 0ã§ãããããxã¯0ã ãšæããŸããã
1.0- > "1 * 1 = 1ã§ãããããxã¯1ã§ãã"
4.0 -> ã2 x 2 = 4ãªã®ã§ãxã¯2ã§ããã
9.0- > "x = 3."
16.0- > ããŸãããx = 4ã
25.0 -> ãHaïŒX = 5ïŒã
ãã以å€ã®å Žå -> x < 0ã® å Žåã ãx <0ïŒã else "Sqrt" ++ show x ++ "=" ++ show ïŒ sqrt x ïŒ
*ã¡ã€ã³
> thinkAboutSquaredX
1ã1 * 1 = 1ã§ãããããXã¯1ã§ããã*ã¡ã€ã³
> thinkAboutSquaredX
25ããïŒ x = 5ïŒããã以å€ã®å Žåã®åèªã¯
ã ãããã§ãªããã°ããæå³ããŸãã æ®ãã®ãªãã·ã§ã³ãé çªã«è¿ã¥ããŠããªã
å Žå ã
ããã§ãªãå Žåã«é©ããŠããŸããããã¯Trueã®å矩èªã«ãããªãããã§ãã äžéšã«ãããªãã·ã§ã³ã¯ãã¹ãŠäœ¿çšã§ããªããªããããäžå€®ã«æ¿å
¥ããªãã§ãã ããã
thinkAboutSquaredX x = ã±ãŒã¹ x
0.0 -> ã0 * 0 = 0ã§ãããããxã¯0ã ãšæããŸããã
1.0- > "1 * 1 = 1ã§ãããããxã¯1ã§ãã"
ããã§ãªããã° -> if x < 0 then â x <0ïŒâ else â Sqrtâ ++ show x ++ "=" ++ show ïŒ sqrt x ïŒ
4.0 -> ã2 x 2 = 4ãªã®ã§ãxã¯2ã§ããã
9.0- > "x = 3."
16.0- > ããŸãããx = 4ã
25.0- > ããïŒ x = 5ïŒã
ã³ãŒãã¯ã³ã³ãã€ã«ãããŸãããäžèŽãããµã³ãã«ã®å
±ééšåã«é¢ããèŠåã衚瀺ãããŸãã
*ã¡ã€ã³> ïŒr
[ 1 of 1 ] Mainã®ã³ã³ãã€ã«ïŒ HïŒ\ Haskell \ QuestTutorial \ Quest \ QuestMainãHs ãè§£éæžã¿ïŒ
HïŒ\ Haskell \ QuestTutorial \ Quest \ QuestMain hsïŒ 16 ïŒ 24 ïŒ
èŠåïŒãã¿ãŒã³ãããïŒ es ïŒãéè€ããŠããŸã
代æ¿ã±ãŒã¹ã®å Žå ïŒ
4.0- > ...
9.0- > ...
16.0- > ...
25.0- > ...
OK ãããŒããããã¢ãžã¥ãŒã«ïŒMain
*ã¡ã€ã³> thinkAboutSquaredX 1
ã1 * 1 = 1ã§ãããããXã¯1ã§ããã
*ã¡ã€ã³> thinkAboutSquaredX 9
ãSqrt 9.0 = 3.0ã
* Main > ïŒ ãã以å€ã®å Žå㯠t
ããã§ãªããã° :: Bool
*ã¡ã€ã³> ãã以å€ã®å Žå == True
æ¬åœ
ããã§ãã£ãŠããããšãæãåºããŠãã ããïŒã¯ãšã¹ããæžããŠããŸãïŒ ãã¹ãŠã®ã¯ãšã¹ãã«ã¯ãå ŽæïŒç§»åãã¹ã«ããïŒããªããžã§ã¯ãããã¬ã€ã€ãŒã¢ã¯ã·ã§ã³ã®3ã€ã®ããšããããŸãã çªå·ãããå Žåãã©ã®ããã«ããŠå Žæã®èª¬æãååŸã§ããŸããïŒ è§£æ±ºçã¯æ¬¡ã®ãšããã§ãã
describeLocation locNumber = ã±ãŒã¹ locNumber
1- > ãæšè£œã®ããŒãã«ã®çãäžã®éšå±ã«ç«ã£ãŠããŸããã
2- > ãããªãã¯å°ããªæšè£œã®ãã§ã³ã¹ã®åŸãã®ãã€ãã¬ãŒãã³ã®åã«ç«ã£ãŠããŸããã
-ããã«ä»ã®å Žæã®èª¬æãæ¿å
¥ããŸãã
ãã以å€ã®å Žå -> "äžæãªå Žæã"
* Main > describeLocation 2
ãããªãã¯å°ããªæšè£œã®ãã§ã³ã¹ã®åŸãã®ãã€ãã¬ãŒãã³ã®åã«ç«ã£ãŠããŸããã
* Main > describeLocation 444
ãå Žæãäžæã§ããã
泚æããŠãã ããïŒã³ã¡ã³ãïŒ åäžè¡ã³ã¡ã³ãã¯ãäºéã®ãã€ãã¹èšå·ã§å§ãŸããŸãïŒSQLïŒã®ããã«ïŒã è€æ°è¡ã®æåã®å Žåã{-ããã³-}ã䜿çšãããŸãã
describeLocation locNumber = ã±ãŒã¹ locNumber
1- > ãæšè£œã®ããŒãã«ã®çãäžã®éšå±ã«ç«ã£ãŠããŸããã
2- > ãããªãã¯å°ããªæšè£œã®ãã§ã³ã¹ã®åŸãã®ãã€ãã¬ãŒãã³ã®åã«ç«ã£ãŠããŸããã
{-ããã«ä»ã®å Žæã®èª¬æãæ¿å
¥ããŸãã
ãŸãã¯ããã
adfsdfå°æ°ã®fef jel jle jkjlefjaiejeo-}
ãã以å€ã®å Žå -> "äžæãªå Žæã"
ããããã«ã åºæ¬çãªHaskellã³ã³ã¹ãã©ã¯ãã®ãã¹ãŠãç¥ãããšã¯ã§ããŸããã§ããã putStrLnãshowãcase-constructionãlinesãghci-ãããã¯ãã¹ãŠå°æ¥çã«å¿
èŠã«ãªããŸãã ã¯ãšã¹ãçšã®é¢æ°ã1ã€äœæããŸããã ããããååã§ãã 第äºéšã§ã¯ãã¯ãšã¹ãã®äœæ¥ãéå§ãããã®éçšã§ä»ã®ãã°ãããHaskellããªãã¯ãåŠã³ãŸãã åéºãåŸ
ã£ãŠããŸãïŒ
çµ±åããã«ã¯ã次ã®ã¿ã¹ã¯ã解決ã§ããŸãã
1.颿°zãå®çŸ©ããããã€ãã®å€ã«ã€ããŠèšç®ããŸãã
t =ïŒ7 * x ^ 3-lnïŒabsïŒaïŒïŒïŒ/ïŒ2.7 * bïŒ
y = sinïŒtïŒ-sinïŒaïŒ
z = 8.87 * y ^ 3 + arctanïŒtïŒ
ããã§ãxãaãbã¯Floatåã®å€æ°ã§ãã
2.颿°yãå®çŸ©ããããã€ãã®å€ã«ã€ããŠèšç®ããŸãã
| lnïŒabsïŒsinïŒxïŒïŒïŒx> 5ã®å Žå
y = | x <= 5ãã€a <= 3ã®å Žåãx ^ 2 + a ^ 2
| x / a + 7.8 * a x <= 5ããã³a> 3ã®å Žå
ããã§ãxãaã¯Floatåã®å€æ°ã§ãã
ç®æ¬¡ããªãã¡ã¬ã³ã¹ã®ãªã¹ããããã³è¿œå æ
å ±ã¯
ãã°ãªãŒãã£ã³ã°ã«ãããŸãã