-- ·|­û / µù¥U -- ¡@
¡@±b¸¹¡G
¡@±K½X¡G
¡@ | µù¥U | §Ñ°O±K½X
3/26 ·s®Ñ¨ì¡I 3/19 ·s®Ñ¨ì¡I 3/14 ·s®Ñ¨ì¡I 12/12 ·s®Ñ¨ì¡I
ÁʮѬyµ{¡EQ & A¡E¯¸°È¯d¨¥ª©¡E«ÈªA«H½c
¢x 3ds Max¢x Maya¢x Rhino¢x After Effects¢x SketchUp¢x ZBrush¢x Painter¢x Unity¢x
¢x PhotoShop¢x AutoCad¢x MasterCam¢x SolidWorks¢x Creo¢x UG¢x Revit¢x Nuke¢x
¢x C#¢x C¢x C++¢x Java¢x ¹CÀ¸µ{¦¡¢x Linux¢x ´O¤J¦¡¢x PLC¢x FPGA¢x Matlab¢x
¢x Àb«È¢x ¸ê®Æ®w¢x ·j¯Á¤ÞÀº¢x ¼v¹³³B²z¢x Fluent¢x VR+AR¢x ANSYS¢x ²`«×¾Ç²ß¢x
¢x ³æ´¹¤ù¢x AVR¢x OpenGL¢x Arduino¢x Raspberry Pi¢x ¹q¸ô³]­p¢x Cadence¢x Protel¢x
¢x Hadoop¢x Python¢x Stm32¢x Cortex¢x Labview¢x ¤â¾÷µ{¦¡¢x Android¢x iPhone¢x
¥i¬d®Ñ¦W,§@ªÌ,ISBN,3dwoo®Ñ¸¹
¸Ô²Ó®ÑÄy¤ÀÃþ

¨ç¼ÆÅTÀ³¦¡»â°ì«Ø¼Ò

( ²Åé ¦r)
§@ªÌ¡G§õ·½Ãþ§O¡G1. -> µ{¦¡³]­p -> ºî¦X
ĶªÌ¡G
¥Xª©ªÀ¡G¹q¤l¤u·~¥Xª©ªÀ¨ç¼ÆÅTÀ³¦¡»â°ì«Ø¼Ò 3dWoo®Ñ¸¹¡G 48172
¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I

¡i¯Ê®Ñ¡j
NT°â»ù¡G 395 ¤¸

¥Xª©¤é¡G1/1/2018
­¶¼Æ¡G296
¥úºÐ¼Æ¡G0
¯¸ªø±ÀÂË¡G
¦L¨ê¡G¶Â¥Õ¦L¨ê»y¨t¡G ( ²Åé ª© )
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R
(½Ð¥ýµn¤J·|­û)
ISBN¡G9787121323928
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç
(²Åé®Ñ¤W©Ò­z¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, ­YŪªÌ»Ý­n½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ)
§@ªÌ§Ç¡G

ĶªÌ§Ç¡G

«e¨¥¡G

±ÀÂ˧Ç
¶}µo¤H­û¥¿²T¨S¦b¦UºØ¿ùºî´_Âøªº°ÝÃD¤¤¡A»Ý­n­É§U¦h®Ö³B²z¾¹¥H¤Î¤À¥¬¦¡°ò
¦¬[ºcªºÀu¶Õ¡A¨ÓÀ³¹ï²£¥Í¼Æ¾Ú¶V¨Ó¶V¦hªº°ª­n¨D¥Î¤á³W¼Òªº¨³²r¼Wªø¡A¥H½T«O§ó
§Cªº©µ¿ð¥H¤Î§ó°ªªº§]¦R²v¡C©Ò¥H¶}µo¤H­û¤£±o¤£¦b®ø¶OªÌ¤é¯q­V¨èªººò±iºI¤î®É
¶¡«e«ö®É¥æ¥I¡C
¶}µo¤H­ûªº¤u§@±q¨Ó¨S¦³»´ªQ¹L¡C¬°¤F¯à«O«ù¦h²£ªº¦P®É¤S¯à¨É¨ü¤u§@¡A»Ý­n
ªö¥Î¦X¾Aªº¤u¨ã¶°¡X¡X³o¨Ç¤u¨ã¥i¥H³q¹LÀu¤Æ¸ê·½ªº¨Ï¥Î¨ÓºÞ²z¤é¯q¼Wªøªº´_Âø©Ê
¥H¤Î»Ý¨D¡C³q±`¡A¦}¤£¬O²³æ¦a°l³v³Ì·s¡B³Ì¬¯ªºªF¦è¡X¡XºÉºÞ³o«Ü»¤¤H¡C©Ò¥H¥²
¶·­n¦^ÅUÁ`µ²¡A±q¹L¥hÁ}ÃøÀò³Óªº¸gÅ礤¾Ç²ß¡A¬Ý¬O§_¥i¥H±N¨äÀ³¥Î¨ì¤µ¤Ñªº³õ´º
¥H¤Î¬D¾Ô¤¤¡C§Ú»{¬°¶}µo¤H­û¶}µoªº¨º¨Ç«D±`¦³¥Îªº¤u¨ã¤¤©Ò¥]§tªº»â°ìÅX°Ê³]­p
¡]domain-driven design¡ADDD¡^¡B¨ç¼Æ¦¡½sµ{¡]FP¡^¥H¤ÎÅTÀ³¦¡­ì«h¡A³£¥i¥HÀ°§U§Ú
­ÌºÞ²z´_Âø¨Æ°Èªº¬Y­Ó¤è­±¡C
y »â°ì´_Âø©Ê¡G»â°ìÅX°Ê³]­pÀ°§U§Ú­Ì«õ±¸¦}²z¸Ñ»â°ìªº¤£¦P¯S©Ê»P»y¸q¡C³q
¹L¸ò§Q¯q¬ÛÃö¤è¥Î¥L­Ìªº»y¨¥¶i¦æ·¾³q¡ADDD ¥i¥H§ó®e©ö¦a³Ð«Ø¥iÂX®iªº»â
°ì¼Ò«¬¨Ó¬M®g¯u¹ê¥@¬É¡A¦P®É¤¹³\«ùÄòªºÅܤơC
y ¸Ñ¨M¤è®×´_Âø©Ê¡G¨ç¼Æ¦¡½sµ{¥i¥HÀ°§U§Ú­Ì«O«ù¦X²z©Ê¤Î¥i²Õ¦X©Ê¡C³q¹L¥i
­«¥Îªº¯Â¨ç¼Æ¦}¨Ï¥Îí©w¡]¤£¥iÅÜ¡^­È¡A¨ç¼Æ¦¡½sµ{´£¨Ñ¤F¤@­Ó°¶¤jªº¤u¨ã¶°¡A
³q¹L¤£·|¡§¼»ÁÀ¡¨ªº¥N½X¨Ó±o¥X¹B¦æ®É¶¡¡B¦}µo©Ê¥H¤Î©â¶H¹Lµ{¡C
¤ª­pºâ¡B²¾°Ê³]³Æ¥H¤Îª«Ápºô¡C¦b³o¨½¡A©Ò¦³·s¨t²Î¥»½è¤W³£¬O¤À¥¬¦¡¨t²Î¡C
­n¹B§@³o­Ó¥@¬É¬O«D±`§xÃø¦Ó¥B«Ü¦³¬D¾Ôªº¡A¦ý¦P¼Ë¡A¤]¾Ö¦³«Ü¦h¦³½ìªº·s
ªº¾÷·|¡C³oºØÅܤƭ¢¨Ï§Ú­Ìªº¦æ·~¥h¤Ï«ä¹L¥h¤@¨Ç³ò¶¨t²Î¬[ºc¥H¤Î³]­p¤è
­±ªº³Ì¨Î¹ê½î¡C
§Ú«D±`³ßÅw¾\Ū³o¥»®Ñ¡A¥¦§¹¥þÅé²{¤F§Ú¦b¹L¥h¤Q´X¦~ªº¦Û¨­¸g¾ú¡C§Ú±qOO
¹ê²ß¥Í¶}©l¡X¡X¥Õ¤Ñ®IÀY¤_C++ ©MJava¡A¦Ó±ß¤W¾\Ū¸g¨åªºGang of Four1¡C2006 ¦~
§Ú¶}©l¾\ŪEric Evan Ãö¤_»â°ìÅX°Ê«Ø¼Òªº®Ñ2¡A¥¦¹ï§Ú©Î¦h©Î¤Ö¦³©Ò±Òµo¡CµM¦Z§Ú´N
Åܦ¨¤@­ÓDDD ¨g¼ö·R¦nªÌ¡A¦b©Ò¦³¥i¯àªº¦a¤è¥hÀ³¥Î¥¦¡C¦h¦~¦Z¡A§Ú¤S¶}©l¨Ï¥Î
Erlang3¡AµM¦Z¬OScala4¡A¥¦­Ì³£Åý§Ú¦A¦¸·P¨ü¨ì¤F¨ç¼Æ¦¡½sµ{ªº¾y¤O¦}²`²`¦a·R¤W¤F
¥¦¡C§Ú¦b¤j¾Ç´Á¶¡¾Ç¹L¨ç¼Æ¦¡½sµ{¡A¦ý·í®É¦}¨S¦³¯u¥¿·NÃѨ쥦ªº«Â¤O¡C¦b³o¬q®É
¶¡¨½¡A§Ú¶}©l¹ïJava ¦b¦}µo©Ê¡B¾AÀ³©Ê¥H¤Î¥i¦ùÁY©Ê¤è­±ªº¡§³Ì¨Î¹ê½î¡¨³vº¥¥¢¥h
«H¥õ¡C¦bErlang¤è¦¡¡A¯S§O¬Oactor¼Ò«¬¡]5 §Ú»{¬°³o¬O¤@­Ó§ó¦nªº°µ¨Æ¤è¦¡¡^ªº«ü¤Þ¤U¡A
§Ú¶}©l¤FAkka ¶µ¥Ø¡A§Ú¬Û«H³o·|¦³§U¤_±NÅTÀ³¦¡­ì«h±a¤J¥D¬y¡C
³o¥»®Ñ¤§©Ò¥H¯à§l¤Þ§Ú¬O¦]¬°¥¦³]¥ß¤F¤@­Ó§ó¥[§»¤jªº¥Ø¼Ð¡A±N3 ­Ó§¹¥þ¤£¦P
ªº¤u¨ã¡]»â°ìÅX°Ê³]­p¡B¨ç¼Æ¦¡½sµ{¥H¤ÎÅTÀ³¦¡­ì«h¡^¥Î¥i¹ê½îªº¤è¦¡¾ã¦X¨ì¤F¤@°_¡C
¥¦±Ð·|§A½Ñ¦pÃä¬É¤W¤U¤å¡B»â°ì¨Æ¥ó¡B¨ç¼Æ¡Bmonad¡Bapplicative¡Bfuture¡Bactor¡B¬y
¥H¤ÎCQRS6 µ¥¤º®e¬O¦p¦ó¨Ï´_Âø©Ê«O«ù¥i±±ªº¡C¦pªG¤º¤ß¤£°÷±j¤j¡A¨º¤\³o¥»®Ñ±N
¤£¾A¦X§A¡A¾\Ū¥¦«Ü¶O«l¡C¦ý¦pªGªá¤W¼Æ¤p®É¡A§A´N·|¦¬Àò¤@¨Ç°ò¦·§©À¡C¿Ë·Rªº
ŪªÌ¡A©¯¹Bªº§A¤w¸gÁÚ¥X¤F²Ä¤@¨B¡A±µ¤U¨Ó©Ò»Ý­n°µªº´N¬OÄ~ÄòŪ¤U¥h¡C
JONAS BONeR
Lightbend ³Ð©l¤H­ÝCFO
Akka ³Ð©l¤H
§Ç
¦b2014 ¦~®L¤Ñ¡AManning ¥Xª©ªÀ§Æ±æ¥Xª©DSLs in Actionªº¤É¯Åª©¥»¡A¦]¬°DSL ªº©Ò¦³·s¯S©Ê³£³ò¶½sµ{»y¨¥ªº
³]­p©M¹ê²{¡C¥©¦Xªº¬O¥¿¦n¦b¨º­Ó®É¶¡¡A§Ú¥Î¨ç¼Æ¼Ò¦¡¹ï¤@­Ó´_Âøªº»â°ì¼Ò«¬¦¨¥\
¦a¶i¦æ¤F­«ºc¡C
¸ò¤@¸s­è²¦·~¶i¤JScala ¨ç¼Æ¦¡½sµ{¥@¬Éªº³n¥ó¤uµ{®v­Ì¤@°_¡A§Ú±N°ì¦æ¬°«Ø
¼Ò¬°¯Âºéªº¨ç¼Æ¡A±N°ì¹ï¶H³]­p¬°¥N¼Æ¼Æ¾ÚÃþ«¬¡A¦}¶}©l·NÃѨì¥N¼ÆAPI ³]­pªº»ù
­È¡C¹Î¶¤ªº¨C­Ó¦¨­û¤H¤â¤@¥»Paul Chiusano ©MRunar Bjarnason ­è§¹¦¨ªºFunctional
Programming in Scala¡]¤¤¤åª©¬°¡mScalo ¨ç¼Æ¦¡½sµ{¡n¡A¥Ñ¹q¤l¥Xª©ªÀ¥Xª©¡^¡C
§Ú­Ìªº°ì¼Ò«¬«D±`´_Âø¡A¹ê²{ÄY®æ¿í¦uEric Evans ¦b¥LªºµÛ§@Domain-Driven
Design: Tackling Complexity in the Heart of Software¡]Addison-Wesley¡A2003 ¦~¡^¤¤©Ò
ÄÄ­zªº»â°ìÅX°Ê³]­p¡]DDD¡^ªº­ì«h¡C¤£¹L§Ú­Ì¨S¦³¥Î­±¦V¹ï¶Hªº¤è¦¡¡A¦Ó¬O¨M©w
ªö¥Î¨ç¼Æ¦¡½sµ{¡C¤@¤Áªº¶}©l³£¹³¬O¤@­Ó¹êÅç¡A¦ý¦b³Ì¦ZÃÒ©ú³o¬O¤@¦¸«D±`¦¨¥\¦}
¥B¥O¤Hº¡·Nªº¸g¾ú¡C²{¦b·í§Ú¦^ÀY¬Ý®É¡Aµo²{DDD ªº¤º®e»P³n¥ó¤uµ{ªº³q¥Î³W«h
«D±`¨ó½Õ¤@­P¡C¦]¦¹¤]¤£¥Î¾á¤ß¨ç¼Æ¦¡¡B»â°ìÅX°Ê³]­p·|Åã±o¹³¬O»â°ì«Ø¼Òªº¨å«¬
­S¨Ò¡C
³o¥»®Ñ¬O§Ú­Ì¦¨¥\¹B¥Î¨ç¼Æ¦¡½sµ{¶i¦æ»â°ì¼Ò«¬¶}µoªºÃÒ¾Ú¡C§Ú¨M©w¸òŪªÌ¤À
¨É§Ú­Ì¿í¦uªº¹ê½î¡Bªö¥Îªº­ì«h¡A¥H¤Î¦b¹ê²{¤¤©Ò¨Ï¥ÎªºScala ­·®æ¡CManning ¥X
ª©ªÀ§¹¥þ¦P·N³o­Ó·Qªk¦}¨M©wÄ~Äò¸Ó¶µ¥Ø¡C
¤£ºÞ§Aªº»â°ì¼Ò«¬¬O¤°¤\¼Ëªº¡A©w¸q¹ê²{¦¨¥\ªº¤@­ÓÃöÁä¼Ð·Ç¬OÀ³¥ÎªºÅTÀ³¯à
¤O¡C¨S¦³¤@­Ó¥Î¤á³ßÅw¨nµÛ«Ì¹õ¤Wªºµ¥«Ý¥ú¼Ð¡A®Ú¾Ú§Ú­Ìªº¸gÅç¨Ó¬Ý¡A³o³q±`¬O¦]
¬°¬[ºc®v«D¥²­n¦aªý¶ë¤F¥D½uµ{ªº°õ¦æ¡C»Ý­nªá¶O®É¶¡°õ¦æªº©ù¶Qªº¾Þ§@À³¸Ó¥Î²§
¨Bªº¤è¦¡¨Ó°õ¦æ¡A§â¥D½uµ{ªÅ¥X¨Óµ¹¨ä¥L¥Î¤á¦æ¬°¡CThe Reactive Manifesto¤¤©w¸q¤F«Ø¼Ò©Ò»Ý­n¨Ï¥Îªº¯S©Ê¡A¥H«K«OÃÒÀ³¥Îµ{§Ç¬O«Dªý¶ë¡B
ÅTÀ³¤Î®Éªº¡A¦}ÁקK¥¨¤j©µ¿ð±a¨Óªº´c¦H¼vÅT¡C³o¤]¬O§Ú­n¦b®Ñ¤¤¼gªº¥t¤@­Ó¤è­±¡C
¦b¸g¹L»PManning ¹Î¶¤¦h¦¸¤Í¦nªº°Ó°Q¦Z¡A§Ú­Ì¨M©w¦b³o¥»®Ñ¤¤±N¨ç¼Æ»PÅTÀ³¦¡½s
µ{µ²¦X°_¨Ó¡C
¤_¬O¥»®Ñ´N½Ï¥Í¤F¡C³q¹L³o­Ó¶µ¥Ø¡A§Ú¦¬Àò¤F¥¨¤jªº¼Ö½ì¡A¤]§Æ±æŪªÌ¯à¦³Ãþ
¦üªºÅéÅç¡C§Ú¦¬¨ì¤FµL¼ÆŪªÌ¡Bµû¼fªÌ¡B¨}¦n¯¬º@ªÌ­Ìªº¯d¨¥¡A¥L­Ì³­µÛ§Ú¤@°_´£
¤É¤F³o¥»®Ñªº½è¶q¡C§Ú¤]«D±`·PÁ¨ӦÛManning ¥Xª©ªÀ¸gÅçÂ×´Iªº½s¿è¥H¤Îµû¼fªÌ
¹Î¶¤ªº¥¨¤j¤ä«ù¡C

­PÁÂ
§Ú­n·PÁ«ܦh¤H¡A¥L­Ìª½±µ©Î¶¡±µ¦a°Ñ»P¤F³o¥»®Ñªº³Ð§@¡C
­º¥ý¡A§Ú­n·PÁÂMartin Odersky¡AScala ½sµ{»y¨¥ªº³Ð«ØªÌ¡A§Ú¥ÎScala §¹¦¨¤F
©Ò¦³¨ç¼ÆÅTÀ³¦¡»â°ì«Ø¼Òªº®×¨Ò¡C¦P®É¤]«D±`·PÁ§A«Ø¥ß¤FScalaz¡A³o­Ó¦³½ìªº®w
¨Ï§Ú­Ì¦b¥ÎScala »y¨¥¶i¦æ¯Â¨ç¼Æ½sµ{®É¥Rº¡¼Ö½ì¡C
Twitter ¬O¤@­Ó«D±`»Åªº·¾³q¤è¦¡¡A©Ó¸ü¤F¦UºØ¦U¼Ëªº°Q½×¡C§Ú¦b¤W­±©M¤@¨Ç¤û
¤H´N¨ç¼Æ¦¡½sµ{¦³¹L«Ü¦h«D±`¿E¯Pªº°Q½×¡C·PÁ¨C¤@¦ì¤û¤H¡A¬O§A­Ì«P¨Ï§Ú§¹¦¨¤F
³o¥»®Ñ¡C
·PÁ©Ҧ³ªºµû¼fªÌ¡GBarry Alexander¡BCosimo Attanasi¡BDaniel Garcia¡BJan Nonnen¡B
Jason Goodwin¡BJaume Valls¡BJean-Fran?ois Morin¡BJohn G. Schwitz¡BKen Fricklas¡B
Lukasz Kupka¡BMichael Hamrah¡BOthman Doghri¡BRintcius Blok¡BRobert Miller¡B
Saleem Shafi¡BTarek Nabil¡A¥H¤ÎWilliam E. Wheeler¡C®É¶¡¥i¯à¬O§Ú­Ì¾Ö¦³ªº³ÌÄ_¶Q
ªº¸ê·½¡A§Ú«D±`·PÁÂ¥L­Ìº@·N¦b³o¥»®Ñ¤Wªá¶O®É¶¡¡A¨C­Óµû¼fªÌ³£µ¹¤F§Ú«Ü´Îªº«Ø
ij¡A·¥¤j¦a´£¤É¤F³o¥»®Ñªº½è¶q¡C
·PÁ©Ҧ³ÁʶR¤FMEAP1 ªºÅªªÌ¡A¦b§@ªÌ¦b½u½×¾Â¨½ªº©w´Á·¾³q¡A¤@ª½¹ªÀyµÛ§Ú
§¹¦¨³o¥»®Ñ¡C¯S§O­n·PÁÂArya Irani¡A¦o°^Ämªº¤@­Ópull ½Ð¨DÀ°§U§Ú§ó·s¤Fmonad
¥N½X¡]±q°ò¤_Scalaz 7.1 ¨ì7.2¡^¡C¦P¼Ë­n¯S§O·PÁÂThomas Lockney ©MCharles Feduke¡A
¥L­Ì¹ï¨C­Ó¤£¦PªºMEAP ª©¥»°µ¤F¹ý©³ªº§Þ³Nµû¼f¡C
§ÚÁÙ­n·PÁÂManning ¥Xª©ªÀ¦A¦¸«H¥ô§Ú¡C¦b§Ú¼g²Ä¤@¥»®Ñªº®É­Ô¡A§Ú­Ì¦³¹L«D
±`¬ü¦nªº¦X§@¡A¦Ó¦A¦¸¦X§@¬Æ¦Ü§ó¦³¼Ö½ì¡C§Ú­n·PÁÂ¥H¤UManning ­û¤uªºªN¥X¤u§@¡C
·PÁÂMichael Stephens©MChristina Rudloff«P¨Ï§Ú±Ò°Ê³o­Ó¶µ¥Ø¡C
·PÁÂJennifer Stout ¦b10 ­Ó³¹¸`ªºº©ªø¹Lµ{¤¤¤£©}¤£¼¸¦aªÈ¥¿¤F§Ú©Ò¦³ªº¿ù»~¡C
·PÁÂAlain Gouniot¦b¾ã­Ó¹Lµ{¤¤´£¨Ñ¤F²`¤Jªº§Þ³Nµû¼f¡C
·PÁÂGandace Gilhooley»PAna RomacÀ°§U±À°Ê³o¥»®Ñ¡C
·PÁÂMary Piergies¡BKevin Sullivan¡BMaureen Spencer¡A¥H¤Î©Ò¦³¹õ¦Z¤u§@¤H­û¡]¥]¬ASharon Wilkey¡BAlyson Brener¡BApril Milne¡A¥H¤ÎDennis Dalinnik¡^¡A¥L­ÌÀ°§U§Ú§â¤@­Ó²ÊÁWªº¯ó½ZÅܦ¨¤@¥»¯u¥¿ªº®Ñ¡C
·PÁÂJonas Boner ¬°§Úªº®Ñ¼g§Ç¡C§Ú«Üºa©¯¡A§Ú»PJonas ¤w¸g¬ÛÃѤF«Üªø®É¶¡¡A¥L¤]¬O§Ú«Ü¦h³n¥ó¶}µo¶µ¥Øªº­«­nÆF·P¨Ó·½¡C
³Ì¦Z¡A§Ú­n·PÁ§ڪº©d¤l¡B¥À¿Ë¥H¤Î§Úªº¨à¤lAarush¡A¥L­Ìµ¹§Ú´£¨Ñ¤F³Ì§¹¬üªº¡§¥ÍºAÀô¹Ò¡¨¡A¦b¨º¨½¡A¼g¤@¥»Ãö¤_¨ç¼Æ¦¡½sµ{ªº®Ñ³oºØ³Ð³y©Ê¥ô°È¤~¦³¥i¯à§¹¦¨¡C

Ãö¤_¥»®Ñ
¥»®Ñ¤º®e¯A¤Î¦p¦ó¨Ï¥Î¨ç¼Æ¦¡½sµ{¹ê²{»â°ì¼Ò«¬¡A¥H¤Î¦p¦ó³q¹L¨Ï¥ÎÅTÀ³¦¡­ì«h¡]½Ñ¦p«Dªý¶ë­pºâ©M²§¨B®ø®§¡^¨Ó½T«O¼Ò«¬ªºÅTÀ³©Ê¡C»â°ì¼Ò«¬³£¬O°w¹ï°ÝÃD»â°ìªº¡A¥i¥H³q¹L«Ü¦h¤è¦¡¹ê²{¤@­Ó¸Ñ¨M¤è®×®Ø¬[¡X¡X
¯à´£¨Ñ»P°ÝÃD»â°ì¼Ò«¬¬Û¦Pªº¨ç¼Æ©Ê¡A³q±`·|¨Ï¥Î­±¦V¹ï¶H§Þ³N¨Ó³]­p»â°ì¼Ò«¬¡C
¥»®Ñ¤¤¨Ï¥Î¤F¤@ºØ¥¿¥æ¤è¦¡¡X¡X¥Î¯Â¨ç¼Æ¹ï»â°ì¦æ¬°«Ø¼Ò¡A¥Î¥N¼Æ¼Æ¾ÚÃþ«¬¹ï»â°ì
¹êÅé«Ø¼Ò¡A¦}±N¤£Åܩʧ@¬°³]­pªÅ¶¡ªº¤@­Ó¥DÃöª`ÂI¡C§@¬°ÅªªÌ¡A§A¯à¾Ç¨ì°ò¤_¥N
¼Æ§Þ³Nªº¨ç¼Æ¦¡³]­p¼Ò¦¡¡A¥i¥H±N¨äª½±µ¥Î¤_¹ê²{¦Û¤vªº»â°ì¼Ò«¬¡C
³o¥»®Ñ¦P¼ËÁÙ¥]¬A¤FÅTÀ³¦¡½sµ{¡X¡X¨Ï¥Îfuture¡Bpromise¡Bactor ¥H¤Îstream ¨Ó
½T«O¼Ò«¬¦b¦³¤@©w©µ¿ðªº±ø¥ó¤U¦³¨¬°÷ªºÅTÀ³©Ê©M¥i¾Þ§@©Ê¡C
®Ñ¤¤¨Ï¥ÎScala »y¨¥¨Ó¹ê²{»â°ì¼Ò«¬¡C§@¬°JVM ªº¤@­Ó¡§±`¾n¥Á¡¨¡A¦b­±¦V¹ï
¶H¥H¤Î¨ç¼Æ¦¡½sµ{·Ç«hªº±j¤O¤ä«ù¤U¡A¤µ¤ÑScala ¤w¸g¬O³Ì¼sªx¨Ï¥Îªº»y¨¥¤§¤@¡C
ºÉºÞ¦p¦¹¡A¥»®Ñ°Q½×ªº®Ö¤ß·Ç«h¦P¼Ë¾A¥Î¤_¨ä¥L¨ç¼Æ¦¡»y¨¥¡A¤ñ¦pHaskell¡C

¤º®e²¤¶
²Ä1 ³¹·|¹ï±q®Ñ¤¤¯à¾Ç²ß¨ì¤°¤\°µ¤@­Ó¥þ­±ªº°Q½×¡C³o¤@³¹¤¤·|´£¨Ñ¤@­ÓÃö¤_
»â°ì¼Ò«¬ªº·§Äý¡A¦P®É°Q½×¤@¨Ç»â°ìÅX°Ê³]­p­I¦Zªº·§©À¡C¤]·|½Í¨ì¨ç¼Æ¦¡½sµ{¡]FP¡^
ªº®Ö¤ß­ì«h¡A¥H¤Î±N»â°ì¼Ò«¬³]­p±o¨¬°÷³z©ú¦}¥B®Ú¾Ú¯ÂÅÞ¿è¶i¦æÃä¬É¸Ñ½¢¦Z©Ò¯à
Ãö¤_¥»®Ñ
x Ãö¤_¥»®Ñ
±o¨ìªº¦n³B¡C³o¤@³¹ÁÙ©w¸q¤FÅTÀ³¦¡¼Ò¦¡¡A¥]¬A¦p¦ó±NFP ©MÅTÀ³¦¡³]­p³o¨â­Ó·§
©À®¹¸j¦b¤@°_¨Ï±o¼Ò«¬§ó¨ã¦³ÅTÀ³©Ê©M¥i¦ùÁY©Ê¡C
²Ä2 ³¹·|°Q½×¥ÎScala §@¬°¨ç¼ÆÅTÀ³¦¡»â°ì«Ø¼Ò¹ê²{»y¨¥ªº¦n³B¡C¥¦·|°Q½×ÀR
ºAÃþ«¬ªº¦n³B¡A¥H¤ÎScala ªº°ª¯ÅÃþ«¬¨t²Î¦p¦óÅý¼Ò«¬§ó¥[°·§§¦}¸g±o°_¦ÒÅç¡C¦b
³o¤@³¹¤¤¡AÁÙ·|¾Ç¨ì¦p¦ó±NOO ©MFP ªº¤O¶qµ²¦X°_¨Ó¹ê²{¼Ò¶ô¤Æªº¤zÐ䪺¼Ò«¬¡C
²Ä3 ³¹±q°Q½×¤@­Ó¥N¼ÆAPI ³]­p¶}©l¡C¥ý¤£¦Ò¼{¹ê²{¡A¥i¥H°ò¤_©â¶Hªº¥N¼Æ¨Ó
³]­pAPI¡C³o¤@³¹µ²¦X¤j¶qªº²Ó¸`¥H¤Î²{¹ê¥@¬É¤¤­Ó¤H»È¦æ¨t²Î«Ø¼Òªº¤@¨Ç¨Ò¤l¡A
§e²{¤F³oºØ¤è¦¡ªºÀuÂI¡C¥N¼Æ¦³¥¦¦Û¨­ªºªk«h¡A°ò¤_¥N¼Æ«Ø³]API ®É¡A­n½T«O¹ê²{
¿í¦u³o¨Çªk«h¡C³o¤@³¹¥H¤@¨ÇÃö¤_»â°ì¹ï¶H¥Í©R©P´Áªº°Q½×§@¬°µ²§À¡A±q¤u¼t¤¤¥Í
²£¥X¨Ó¶}©l¡AµM¦Z°õ¦æ»â°ì¦æ¬°¡A³Ì¦Z«ù¤[¤Æ¡C
²Ä4 ³¹»EµJ¦b¨ç¼Æ¦¡³]­p¼Ò¦¡¤W¡A³o¸ò¥H«e©Ò¾Çªº­±¦V¹ï¶Hªº³]­p¼Ò¦¡¦³·¥¤j
ªº¤£¦P¡C¤@­Ó¨ç¼Æ¦¡³]­p¼Ò¦¡¬O°ò¤_¥N¼Æ¤èªkªº¡A¥¦¥i¥H¦³«Ü¦hºØ¹ê²{¤è¦¡¡]©Î¸à
ÄÀ¡^¡A¦]¦¹¦b­«¥Î©Ê¤W·|»·¶W¹LOO ³]­p¼Ò¦¡¡C³o¤@³¹±N°Q½×functor¡Bapplicative¡B
monad¡A³o¨Ç³£¬O¨ç¼Æ¦¡½sµ{»y¨¥¤¤ªº³Ì°ò¥»ªº¥i´_¥Î¼Ò¦¡¡C³o¤@³¹ÁÙ·|°Q½×¤@¨Ç
¨Ï¥Î®×¨Ò¡A¦p°ò¤_³o¨Ç¼Ò¦¡ªº¥N¼Æ¤èªk¦p¦óºtÅÜ»â°ì¼Ò«¬¡C
²Ä5 ³¹¬OÃö¤_¦p¦ó¼Ò¶ô¤Æ»â°ì¼Ò«¬¡C¤@­Ó«D¤Zªº»â°ì¼Ò«¬¬O¤@¨t¦C¤p¼Ò«¬ªº¶°
¦X¡A¨C­Ó¤p¼Ò«¬³£³Q»{¬°¬OÃä¬É¤W¤U¤å¡]bounded context¡^¡C³o¤@³¹·|¸ÑÄÀ¦p¦ó±NÃä
¬É¤W¤U¤å³]­p¦¨¿W¥ßªº¥[¤u«~¡A¥H¤Î¦p¦ó½T«O¦h­ÓÃä¬É¤W¤U¤å¤§«eªº³q«H¦bªÅ¶¡©M
®É¶¡¤Wªº¸Ñ½¢¡C³o¬O»â°ìÅX°Ê³]­pªº®Ö¤ß·§©À¤§¤@¡A¦Ó¥B¥i¥H¥Î²§¨B®ø®§¨Ó«Ü®e©ö
¦a¹ê²{¡C¥»³¹ÁÙ±N¤¶²Ðfree monad¡A¥t¤@ºØ¹B¥Î¨ç¼Æ¦¡½sµ{·§©Àªº°ª¯Å¼Ò¶ô¤Æ§Þ³N¡C
²Ä6 ³¹±N°Q½×ÅTÀ³¦¡»â°ì¼Ò«¬¡C³o¤@³¹¯A¤Î¦p¦ó³]­pÅTÀ³¦¡API¡A¬J¤£·|ªý¶ë
¥D½uµ{ªº°õ¦æ¡A¦P®É¤S¯à«OÃÒ¼Ò«¬ªºÅTÀ³©Ê¡C³o¤@³¹·|´£¨Ñ»â°ì¹ï¶H©MÃä¬É¤W¤U¤å
¡]¦pfuture¡Bpromise¡Bactor ©Mreactive stream¡^¤§¶¡«Dªý¶ë¦¡³q«Hªº¦UºØ¤è¦¡¡AÁÙ·|
°Q½×¤@­Ó¨Ï¥Î³õ´º¡A§Y¦b­Ó¤H»È¦æ»â°ì¤¤¦p¦ó¹B¥Îreactive stream¡C
²Ä7 ³¹Á¿¸Ñ¤Freactive stream¡C¥ÎAkka Stream ¹ê²{¤F¤@­Ó¤¤µ¥³W¼Òªº¥Î¨Ò¨ÓÃÒ
©úreactive stream ªº«Â¤O¡C²Ä6 ³¹¯A¤Î¤Factor ¼Ò«¬ªº¯ÊÂI¡A¦Ó²Ä7 ³¹«h§i¶D§Ú­Ì¦p
¦ó¥ÎAkka Stream ¹ê²{Ãþ«¬API ¨Ó§JªA³o¨Ç¯ÊÂI¡C
²Ä8 ³¹Âл\¤F»â°ì¼Ò«¬ªº«ù¤[¤Æ¡]persistence¡^¡C³o¤@³¹±q¤@­Ó°ò¤_CRUD1 «ù¤[
¤Æ¼Ò«¬ªºµû½×¶}©l¡A¤¶²Ð¹B¥Î¨Æ¥óÅX°Ê§Þ³NªºÅTÀ³¦¡«ù¤[¤Æªº·§©À¡C³o¤@³¹µ²¦X¤F
·í«e¼Ò«¬ªºª¬ªp¤¶²Ð»â°ì¨Æ¥óªº§¹¾ã¾ú¥v¡A°Q½×½Ñ¦pCQRS ©M¨Æ¥ó·½ªº¹ê²{§Þ³N¡A
³o¤]²£¥Í¤F¤@­Ó§ó¦³¼u©Êªº«ù¤[¤Æ¼Ò«¬¡C³o¤@³¹¤]¥ÎSlick2 ºt¥Ü¤F¤@­Ó°ò¤_CRUD
ªº¹ê²{¡A¤@ºØ°w¹ïRDBMS ªº³q¥Îªº¨ç¼Æ«¬¨ìÃö¨t«¬¬M®g®Ø¬[¡C
²Ä9 ³¹¬OÃö¤_´ú¸Õ»â°ì¼Ò«¬ªº¡C¥¦±q°ò¤_xUnit1 ¸g¨åªº´ú¸Õ¤èªk½×¶}©l¡AµM¦Z
¦C¥X¨ä¤¤ªº¯Ê³´¥H¤Î¦p¦ó¨Ï¥Î¥N¼Æ´ú¸Õ¶i¦æ§ï¶i¡C³o¤@³¹¤¶²Ð¤F°ò¤_Äݩʪº´ú¸Õ¡A
¥¦¤¹³\¥Î¤á½s¼g¥N¼ÆÄÝ©Ê¡AµM¦Z³q¹L¹B¦æ®É¦Û°Ê¥Í¦¨ªº¼Æ¾Ú¨ÓÅçÃÒ¥¦¡C³o¤@³¹·|¨Ï
¥ÎScala °ò¤_Äݩʪº´ú¸Õ®wScalaCheck¡Aµ²¦X«e­±³¹¸`¤w¦³ªº»â°ì¼Ò«¬¨Ó°Q½×³oºØ
§Þ³Nªº¹ê²{¤è¦¡¡C
¥»®Ñ³Ì¦Z¦b²Ä10 ³¹¤¤¹ï®Ö¤ß·§©À¶i¦æ¦^ÅU¡A¦}°Q½×»â°ì«Ø¼Ò¥¼¨Óªºµo®iÁͶաC
¥N½X¬ù©w¤Î¤U¸ü®Ñ¤¤©Ò¦³·½¥N½X³£¥Îµ¥¼e¦rÅé¨Ó©M´¶³q¤å¥»°Ï¤À¡C¦³®É»Ý­n±N¤@¦æ¥N½X¤À¦¨¨â
¦æ¬Æ¦Ü§ó¦h¦æ¨Ó¾AÀ³®Ñ­¶¡C§Ú­Ì·|¥Î³o¼Ëªº½bÀY?¨Óªí¥Ü³sÄò¦æ¡C
¥N½X¤¤¥]§t«Ü¦hª`ÄÀ¡C¦b¤@¨Ç±¡ªp¤U¡A·|¥Î¼Æ¦r¼Ð°O»P¤å¦Zªºª`¸Ñ¹ïÀ³ÃöÁp¡C´úÅç»P½m²ß
®Ñ¤¤¥]§t¤@¨t¦C´úÅç»P½m²ß¡A¥¦­Ì·|À°§UŪªÌ¤F¸Ñ¦Û¨­¹ï°Q½×¤º®eªº²z¸Ñµ{«×¡C
²Ä1 ³¹©M²Ä2 ³¹¥]§t¤@¨Ç°ò¥»·§©Àªº´úÅç¡C¨C­Ó¡§´úÅç®É¶¡¡¨¤§¦Zªº¤@­¶©Î¨â­¶´N
·|¦³¬ÛÀ³ªº¡§´úÅ絪®×¡¨¡A¦p¥H¤U¨Ò¤l©Ò¥Ü¡C
´úÅç®É¶¡1.1¡@§A»{¬°³oºØ¼Ò«¬³Ì¥D­nªº¯ÊÂI¬O¤°¤\¡H
´úÅ絪®×1.1¡@¥D­n°ÝÃD¬O©öÅÜ©Ê¡A¥¦·|±q¨â­Ó¤è­±¥´À»§A¡G«ÜÃø¦b¦}¦æ³]¸m¤U¨Ï
¥Î©â¶H¡A¦Ó¥B«ÜÃø±À²z§Aªº¥N½X¡C
±q²Ä3 ³¹¶}©l¡A½m²ß·|´_Âø¤@¨Ç¡C´úÅç³Q½s¸¹ªº½m²ß©Ò´À¥N¡X¡X¹ê»Úªº«Ø¼Ò°ÝÃD¡A
³o¨Ç½m²ß±N»EµJ¦b¹ïÀ³³¹¸`©Ò°Q½×ªº·§©À¤W¡C½m²ß¦p¦P¥H¤U¨Ò¤l¡C
¤º®e²¤¶¡G

¶Ç²Îªº¤À¥¬¦¡À³¥Î¤£·|¤Á¤J·LªA°È¡B§Ö³t¼Æ¾Ú¤Î¶Ç·P¾¹ºôµ¸ªºÅTÀ³¦¡¥@¬É¡C¬°¤F®·Àò³o¨ÇÀ³¥Îªº°ÊºAÁp¨t¤Î¨Ì¿à¡A§Ú­Ì»Ý­n¨Ï¥Î¥t¥~¤@ºØ¤è¦¡¨Ó¶i¦æ»â°ì«Ø¼Ò¡C¥Ñ¯Â¨ç¼Æºc¦¨ªº»â°ì¼Ò«¬¬O¥H¤@ºØ§ó¥[¦ÛµMªº¤è¦¡¨Ó¤Ï¬M¤@­ÓÅTÀ³¦¡¨t²Î¤ºªº³B²z¬yµ{¡A¦P®É¥¦¤]ª½±µ¬M®g¨ì¤F¬ÛÀ³ªº§Þ³N©M¼Ò¦¡¡A¤ñ¦pAkka¡BCQRS ¥H¤Î¨Æ¥ó·¹·½¡C¥»®ÑÁ¿­z¤FÅTÀ³¦¡¨t²Î¤¤«Ø¥ß»â°ì¼Ò«¬©Ò»Ý­nªº³q¥Î¥B¥i­«¥Îªº§Þ¥©¡X¡X­º¥ý¤¶²Ð¤F¨ç¼Æ¦¡½sµ{©MÅTÀ³¦¡¬[ºcªº¬ÛÃö·§©À¡AµM¦Z³v¨B¦a¦b»â°ì«Ø¼Ò¤¤¤Þ¤J³o¨Ç·sªº¤èªk¡A¦P®É¥»®Ñ´£¨Ñ¤F¤j¶qªº®×¨Ò¡A·í¦b¶µ¥Ø¤¤À³¥Î³o¨Ç·§©À®É¡A¥i§@¬°°Ñ¦Ò¡C

¥Ø¿ý¡G

1. ¨ç¼Æ¦¡»â°ì«Ø¼Ò¡G¤¶²Ð........ 1
1.1¡@¤°¤\¬O»â°ì¼Ò«¬ ............ 2
1.2¡@»â°ìÅX°Ê³]­p¤¶²Ð .......... 4
1.2.1¡@Ãä¬É¤W¤U¤å .......... 4
1.2.2¡@»â°ì¼Ò«¬¤¸¯À .......... 5
1.2.3¡@»â°ì¹ï¶Hªº¥Í©R©P´Á .......... 8
1.2.4¡@³q¥Î»y¨¥ ............ 13
1.3¡@¨ç¼Æ¤Æ«ä·Q ............ 14
1.3.1¡@«¢¡A¯Âºéªº¼Ö½ì .......... 17
1.3.2¡@¯Â¨ç¼Æ²Õ¦X .......... 21
1.4¡@ºÞ²z°Æ§@¥Î ............ 26
1.5¡@¯Â¼Ò«¬¤¸¯ÀªºÀuÂI .......... 28
1.6¡@ÅTÀ³¦¡»â°ì¼Ò«¬ ............ 31
1.6.1¡@ÅTÀ³¦¡¼Ò«¬ªº3+1 µø¹Ï ........ 31
1.6.2¡@´¦¬ï¡§§Úªº¼Ò«¬¤£¯à¥¢±Ñ¡¨ªº¯«¸Ü ...... 32
1.6.3¡@¦ùÁY©Ê»P®ø®§ÅX°Ê .......... 34
1.7¡@¨Æ¥óÅX°Ê½sµ{ ............ 35
1.7.1¡@¨Æ¥ó»P©R¥O .......... 37
1.7.2¡@»â°ì¨Æ¥ó ............ 38
1.8¡@¨ç¼Æ¦¡¹J¤WÅTÀ³¦¡ .......... 40
1.9¡@Á`µ² .............. 41
2¡@Scala »P¨ç¼Æ¦¡»â°ì¼Ò«¬........42
2.1¡@¬°¤°¤\¬OScala ........... 43
2.2¡@ÀRºAÃþ«¬»P´I»â°ì¼Ò«¬ .......... 45
2.3¡@»â°ì¦æ¬°ªº¯Â¨ç¼Æ .......... 47
2.3.1¡@¦^ÅU©â¶Hªº¯Âºé©Ê .......... 50
2.3.2¡@¤Þ¥Î³z©úªº¨ä¥L¦n³B ........ 53
2.4¡@¥N¼Æ¼Æ¾ÚÃþ«¬»P¤£ÅÜ©Ê .......... 53
2.4.1¡@°ò¦¡G©MÃþ«¬»P­¼¿nÃþ«¬ ........ 53
2.4.2¡@¼Ò«¬¤¤ªºADT µ²ºc¼Æ¾Ú ........ 56
2.4.3¡@ADT »P¼Ò¦¡¤Ç°t ......... 56
2.4.4¡@ADT ¹ªÀy¤£ÅÜ©Ê ......... 58
2.5¡@§½³¡¥Î¨ç¼Æ¡A¥þ§½¥ÎOO.......... 59
2.5.1¡@Scala ¤¤ªº¼Ò¶ô .......... 60
2.6¡@¥ÎScala ¨Ï¼Ò«¬¨ã³ÆÅTÀ³©Ê .......... 64
2.6.1¡@ºÞ²z§@¥Î ............ 65
2.6.2¡@ºÞ²z¥¢±Ñ ............ 65
2.6.3¡@ºÞ²z©µ¿ð ............ 67
2.7¡@Á`µ² .............. 69
3¡@³]­p¨ç¼Æ¦¡»â°ì¼Ò«¬.......70
3.1¡@API ³]­pªº¥N¼Æ ........... 71
3.1.1¡@¬°¤°¤\¬O¥N¼Æ¤èªk .......... 72
3.2¡@¬°»â°ìªA°È©w¸q¥N¼Æ .......... 72
3.2.1¡@½á­È©â¶H ............ 73
3.2.2¡@²Õ¦X©â¶H ............ 74
3.2.3¡@Ãþ«¬ªº³Ì²×¥N¼Æ .......... 76
3.2.4¡@¥N¼Æªk«h ............ 77
3.2.5¡@¥N¼Æ¸ÑÄÀµ{§Ç .......... 79
3.3¡@»â°ì¼Ò«¬¥Í©R©P´Á¤¤ªº¼Ò¦¡ ........ 80
3.3.1¡@¤u¼t¡X¡X¹ï¶H±q¦ó³B¨Ó......... 82
3.3.2¡@´¼¯àºc³y¾¹ .......... 82
3.3.3¡@³q¹L§ó¦³ªí²{¤OªºÃþ«¬¶i¤@¨B´£¤É´¼¯à ...... 84
3.3.4¡@¥Î¥N¼Æ¼Æ¾ÚÃþ«¬»E¦X ........ 86
3.3.5¡@¥Î³zÃè§ó·s»E¦X¥\¯à ........ 88
3.3.6¡@­ÜÀx»P¸Ñ½¢ªº¥ÃùÚÃÀ³N ........ 94
3.3.7¡@°ª®Ä¦a¨Ï¥Î¥Í©R©P´Á¼Ò¦¡¡X¡Xµ²½×....... 101
3.4¡@Á`µ² .............. 102
4¡@»â°ì¼Ò«¬ªº¨ç¼Æ¦¡¼Ò¦¡........ 103
4.1¡@¼Ò¦¡¡X¡X¥N¼Æ¡B¨ç¼Æ¡BÃþ«¬ªº»E¦X ....... 104
4.1.1¡@»â°ì¼Ò«¬¤¤ªº«õ±¸¼Ò¦¡ ........ 106
4.1.2¡@¥Î¨ç¼Æ¦¡¼Ò¦¡¨Ï»â°ì¼Ò«¬°Ñ¼Æ¤Æ ...... 107
4.2¡@±jÃþ«¬¨ç¼Æ¦¡½sµ{¤¤­pºâªº°ò¥»¼Ò¦¡ ...... 112
4.2.1¡@¨ç¤l¡X¡X«Ø¥ß¼Ò¦¡......... 112
4.2.2¡@¥[±jª©¨ç¤l¼Ò¦¡ .......... 114
4.2.3¡@³æ¤l§@¥Î¡X¡Xapplicative ¼Ò¦¡ªºÅÜÅé ...... 121
4.3¡@¦p¦ó¥Î¼Ò¦¡¹ï»â°ì¼Ò«¬¶i¦æ¶ì§Î ........ 130
4.4¡@¥Î¥N¼Æ¡BÃþ«¬©M¼Ò¦¡ºt¶iAPI ......... 134
4.4.1¡@¥N¼Æ¡X¡X²Ä¤@½Z......... 136
4.4.2¡@§ï¶i¥N¼Æ .......... 137
4.4.3¡@³Ì²×²Õ¦X¡X¡Xªö¥ÎÃþ«¬......... 138
4.5¡@¥Î¼Ò¦¡©MÃþ«¬¼W±j»â°ìªº¤£ÅÜ©Ê ........ 139
4.5.1¡@¶U´Ú³B²z¼Ò«¬ .......... 139
4.5.2¡@¨Ï«Dªkª¬ºA¤£¥iªí¥Ü ........ 141
4.6¡@Á`µ² .............. 142
5¡@»â°ì¼Ò«¬ªº¼Ò¶ô¤Æ........ 144
5.1¡@±N»â°ì¼Ò«¬¼Ò¶ô¤Æ .......... 145
5.2¡@¼Ò¶ô¤Æªº»â°ì¼Ò«¬¡X¡X®×¨Ò¾Ç²ß ....... 146
5.2.1¡@¼Ò¶ôªº¸Ñ­å .......... 147
5.2.2¡@¼Ò¶ôªººc¦¨ .......... 154
5.2.3¡@¼Ò¶ôªºª«²z²Õ´ .......... 155
5.2.4¡@¼Ò¶ô¹ªÀy²Õ¦X .......... 156
5.2.5¡@»â°ì¼Ò«¬¤¤ªº¼Ò¶ô¤Æ¡X¡Xµ²½×....... 157
5.3¡@Ãþ«¬Ãþ¼Ò¦¡¡X¡X¼Ò¶ô¤Æªº¦hºA¦æ¬° ....... 157
5.4¡@Ãä¬É¤W¤U¤åªº»E¦X¼Ò¶ô .......... 160
5.4.1¡@¼Ò¶ô»PÃä¬É¤W¤U¤å .......... 161
5.4.2¡@Ãä¬É¤W¤U¤å¶¡ªº³q«H ........ 162
5.5¡@¼Ò¶ô¤Æªº¥t¤@­Ó¼Ò¦¡¡X¡Xfree monad ....... 163
5.5.1¡@½ã¤á¦sÀx .......... 163
5.5.2¡@¨Ï¥¦§K¶O .......... 165
5.5.3¡@½ã¤á¦sÀx¡X¡Xfree monad ........ 167
5.5.4¡@free monad ¸ÑÄÀµ{§Ç ......... 169
5.5.5¡@free monad¡X¡X­«ÂI¦^ÅU ........ 172
5.6¡@Á`µ² .............. 173
6¡@ÅTÀ³¦¡¼Ò«¬.......... 174
6.1¡@ÅTÀ³¦¡»â°ì¼Ò«¬ .......... 175
6.2¡@¨Ï¥Îfuture ªº«Dªý¶ëAPI ³]­p ........ 177
6.2.1¡@²§¨B§@¬°°ïÅ|§@¥Î .......... 178
6.2.2¡@°ò¤_monad Âà´«¾¹ªº¹ê²{ ....... 181
6.2.3¡@¥Î¦}¦æ¦s¨ú­°§C©µ¿ð¡X¡X¤@ºØÅTÀ³¦¡¼Ò¦¡ .... 183
6.2.4¡@¨Ï¥Îscalaz.concurrent.Task §@¬°ÅTÀ³¦¡ºc³y .... 187
6.3¡@©ú½Tªº²§¨B®ø®§¶Ç»¼ .......... 189
6.4¡@¬y¼Ò¦¡ ............ 191
6.4.1¡@¤@­Ó®×¨Ò .......... 191
6.4.2¡@»â°ìºÞ¹D¹Ï .......... 195
6.4.3¡@¦ZºÝÀ£¤O³B²z .......... 197
6.5¡@actor ¼Ò«¬ ............. 198
6.5.1¡@»â°ì¼Ò«¬»Pactor ......... 199
6.6¡@Á`µ² .............. 203
7¡@ÅTÀ³¦¡¬y«Ø¼Ò......... 205
7.1¡@ÅTÀ³¦¡¬y¼Ò«¬ ............ 206
7.2¡@¦ó®É¨Ï¥Î¬y¼Ò«¬ .......... 207
7.3¡@»â°ì¥Î¨Ò ............ 208
7.4¡@°ò¤_¬yªº»â°ì¥æ¤¬ .......... 208
7.5¡@¹ê²{¡G«e»O ............ 210
7.6¡@¹ê²{¡G¦Z»O ............ 211
7.7¡@¬y¼Ò«¬ªº¥D­nµ²½× .......... 214
7.8¡@¨Ï¼Ò«¬¨ã¦³¼u©Ê .......... 215
7.8.1¡@¨Ï¥ÎAkka Streams ºÊºÞ ........ 216
7.8.2¡@¤¾§E¶°¸s .......... 217
7.8.3¡@¼Æ¾Úªº«ù¤[¤Æ .......... 217
7.9¡@°ò¤_¬yªº»â°ì¼Ò«¬»PÅTÀ³¦¡­ì«h ........ 219
7.10¡@Á`µ² ............ 220
8¡@ÅTÀ³¦¡«ù¤[¤Æ»P¨Æ¥ó·¹·½...... 221
8.1¡@»â°ì¼Ò«¬ªº«ù¤[¤Æ .......... 222
8.2¡@Ãöª`ÂI¤ÀÂ÷ ............ 224
8.2.1¡@«ù¤[¤ÆªºÅª/ ¼g¼Ò«¬ ......... 225
8.2.2¡@©R¥O¬d¸ß³d¥ô¤ÀÂ÷ .......... 226
8.3¡@¨Æ¥ó·¹·½ ............. 228
8.3.1¡@¨Æ¥ó·¹·½»â°ì¼Ò«¬¤¤ªº©R¥O©M¨Æ¥ó ...... 229
8.3.2¡@¹ê²{CQRS ©M¨Æ¥ó·¹·½ ........ 231
8.4¡@¹ê²{¨Æ¥ó·¹·½ªº»â°ì¼Ò«¬¡]¨ç¼Æ¦¡¡^ ........ 232
8.4.1¡@§@¬°ÀYµ¥¹êÅ骺¨Æ¥ó ........ 233
8.4.2¡@©R¥O¬O¨Æ¥ó¤Wªºfree monad ........ 235
8.4.3¡@¸ÑÄÀµ{§Ç¡X¡XÁôÂéҦ³¦³½ìªºªF¦è....... 237
8.4.4¡@§ë¼v¡X¡XŪ¨úºÝ¼Ò«¬......... 242
8.4.5¡@¨Æ¥ó¦sÀx .......... 243
8.4.6¡@¤À¥¬¦¡CQRS¡X¡X¤@­Óµu«H ....... 243
8.4.7¡@¹ê²{ªºÁ`µ² .......... 244
8.5¡@¨ä¥L«ù¤[¤Æ¼Ò«¬ .......... 245
8.5.1¡@±N»E¦X§@¬°ADT ¬M®g¨ìÃö¨t«¬ªí ...... 245
8.5.2¡@¾Þ§@¼Æ¾Ú¡]¨ç¼Æ¦¡¡^ ........ 247
8.5.3¡@¨ìAkka Streams ºÞ¹DªºÅTÀ³¦¡Àò¨ú ...... 248
8.6¡@Á`µ² .............. 249
9¡@´ú¸Õ»â°ì¼Ò«¬........ 250
9.1¡@´ú¸Õ»â°ì¼Ò«¬·§­z ............ 251
9.2¡@³]­p¥i´ú¸Õªº»â°ì¼Ò«¬ .......... 252
9.2.1¡@¸Ñ½¢°Æ§@¥Î .......... 253
9.2.2¡@¬°»â°ì¨ç¼Æ´£¨Ñ¦Û©w¸q¸ÑÄÀµ{§Ç ...... 254
9.2.3¡@¹ê²{°Ñ¼Æ¤Æ»P´ú¸Õ .......... 255
9.3¡@°ò¤_xUnit ªº´ú¸Õ ........... 256
9.4¡@¦^ÅU¼Ò«¬ªº¥N¼Æ .......... 257
9.5¡@°ò¤_Äݩʪº´ú¸Õ .......... 258
9.5.1¡@«Ø¼ÒÄÝ©Ê .......... 258
9.5.2¡@ÅçÃÒ»â°ì¼Ò«¬¤¤ªºÄÝ©Ê ........ 259
9.5.3¡@¼Æ¾Ú¥Í¦¨¾¹ .......... 264
9.5.4¡@¬O§_¤ñ°ò¤_xUnit ªº´ú¸Õ§ó¦n ....... 266
9.6¡@Á`µ² .............. 267
10¡@®Ö¤ß«ä·Q»P­ì«h........ 268
10.1¡@¦^ÅU ............ 268
10.2¡@¨ç¼Æ¦¡»â°ì«Ø¼Òªº®Ö¤ß­ì«h ........ 269
10.2.1¡@ªí¹F¦¡«ä·Q .......... 269
10.2.2¡@¦­©â¶H, ±ß½á­È ......... 270
10.2.3¡@¨Ï¥Î¦X¾Aªº©â¶H .......... 270
10.2.4¡@µo¥¬­n°µ¤°¤\¡A¦b²Õ¦X¾¹¤¤ÁôÂæp¦ó°µ .... 270
10.2.5¡@±q¹ê²{¤¤¸Ñ½¢¥N¼Æ ........ 271
10.2.6¡@¹jÂ÷Ãä¬É¤W¤U¤å .......... 271
10.2.7¡@°¾¦Vfuture ¦Ó¤£¬Oactor ........ 271
10.3¡@®i±æ¥¼¨Ó ............ 272
§Ç¡G