หมายเหตุสำคัญ: มีการแปลชั่วคราวเป็น repo ใหม่
repo นี้เลิกใช้แล้ว
กรุณาสำหรับเวอร์ชันสุดท้ายไปที่:
https://github.com/transient-haskell/transient-stack
มีแพ็คเกจ Haskell ทั้งหมดรวมถึงการคำนวณแบบกระจาย (Transient-Universe) และเว็บฝั่งไคลเอ็นต์ (Axiom)

หมายเหตุ: การคำนวณแบบกระจายและเว็บดั้งเดิมอยู่ในช่วงเวลาชั่วคราวและความจริง ตัวอย่างบางส่วนที่ตัวอย่างชั่วคราว
transient :Rahul Muttineni @Rahulmutt Nov 09 2016 03:40 นักพัฒนาตะกั่วของ ETA (คอมไพเลอร์ JVM Haskell)
มันเป็นเรื่องเล็กน้อยที่กำลังก้มหน้าอยู่ว่ามันเหมือนกับการใช้รายการระดับสูงกว่า Monad แต่มันก็เจ๋งมาก สำหรับการเริ่มต้น haskellers สิ่งที่จะมีประโยชน์จริงๆคือการสร้างภาพของสิ่งที่เกิดขึ้นเมื่อคุณทำสิ่งต่าง ๆ แบบกระจาย/ขนาน เกือบจะน่าตกใจว่าคุณสามารถใช้การคำนวณผ่านเธรด/โหนดได้อย่างง่ายดาย
ส่วนที่เย็นคือความสามารถในการผสมในการตั้งค่าแบบกระจาย คุณสามารถสร้างฟังก์ชั่น monadic ที่มีลำดับสูงกว่าที่ช่วยให้คุณสามารถเขียนและนำการทำธุรกรรมแบบกระจายมาใช้ซ้ำผ่าน wormhole และ teleport อีกครั้ง ประโยชน์อีกประการหนึ่งคือการทำธุรกรรมจะกลายเป็นชั้นหนึ่งและ คุณสามารถเห็นสิ่งที่เกิดขึ้นในที่เดียว แทนที่จะแจกจ่ายตรรกะข้ามนักแสดงทำให้รหัสเทียบเท่ากับการเรียกคืนเหตุการณ์ตามที่คุณได้กล่าวไว้
https://gitter.im/transient-transient-universe-hplay/lobby?at=58228CAA35E6CF054773303B
หนึ่งในความฝันของวิศวกรรมซอฟต์แวร์คือความสามารถในการรวบรวมที่ไม่ จำกัด
สิ่งนี้อาจถูกใส่ในข้อกำหนดเหล่านี้:
ให้ ap1 และ ap2 แอพพลิเคชั่นสองแอปพลิเคชันที่มีความซับซ้อนโดยพลการโดยมีเอฟเฟกต์ทั้งหมดรวมถึงหลายเธรด, IO แบบอะซิงโครนัส, ไม่แน่นอน, เหตุการณ์และบางทีการคำนวณแบบกระจาย
จากนั้นชุดค่าผสม:
- ap1 <|> ap2 -- Alternative expression
- ap1 >>= x -> ap2 -- monadic sequence
- ap1 <> ap2 -- monoidal expression
- (,) <$> ap1 <*> ap2 -- Applicative expression
เป็นไปได้หากประเภทที่ตรงกันและสร้างแอปพลิเคชันใหม่ที่สามารถประกอบได้เช่นกัน
ชั่วคราวทำอย่างนั้น
ตัวดำเนินการ <$> <*> และ <> พร้อมกันพร้อมกันผู้ประกอบการ <|> แสดงความขนานและ >>= สำหรับการเรียงลำดับของเธรดกระบวนการกระจายหรือวิดเจ็ตเว็บ ดังนั้นแม้ในการปรากฏตัวของเอฟเฟกต์เหล่านี้และอื่น ๆ ทุกอย่างก็สามารถทำหน้าที่ได้
เพื่อจุดประสงค์นี้ชั่วคราวเป็นเอฟเฟกต์ที่ขยายได้ด้วยเอฟเฟกต์ที่สำคัญและดั้งเดิมทั้งหมดสำหรับการขนานกันเหตุการณ์เหตุการณ์แบบอะซิงโครนัสการเลิกจ้างก่อนกำหนดการบันทึกที่ไม่ใช่ determinism และการคำนวณแบบกระจาย เนื่องจากเป็นไปได้ที่จะขยายออกไปด้วยเอฟเฟกต์มากขึ้นโดยไม่ต้องเพิ่มหม้อแปลง monad จึงมั่นใจได้
โปรแกรมนี้จะสตรีม "Hello World" จาก n โหนดถ้าคุณป้อน "ไฟ" ในคอนโซล
main = keep $ initNode $ inputNodes <|> distribStream
distribStream = do
local $ option " fire " " fire "
r <- clustered . local . choose $ repeat " hello world "
localIO $ print rอ่านบทช่วยสอนเพื่อทราบวิธีการรวบรวมและเรียกใช้
โปรแกรมนี้จะนำเสนอลิงค์ในเบราว์เซอร์และสตรีมหมายเลข Fibonnacci ไปยังเบราว์เซอร์เมื่อคุณคลิก (ถ้าคุณมีนักเทียบท่าคุณสามารถเรียกใช้มันได้อย่างตรงไปตรงมาจากคอนโซลดูสิ่งนี้
main = keep . initNode $ webFib
webFib = onBrowser $ do
local . render $ wlink () (h1 " hello fibonacci numbers " )
r <- atRemote $ do
r <- local . threads 1 . choose $ take 10 fibs
localIO $ print r
localIO $ threadDelay 1000000
return r
local . render . rawHtml $ (h2 r)
where
fibs = 0 : 1 : zipWith (+) fibs ( tail fibs) :: [ Int ]โปรแกรมนี้รวมฟังก์ชันทั้งสอง:
main = keep . initNode $ inputNodes <|> webFib <|> distribStreamวิกิเป็นผู้ใช้มากขึ้น
เซสชันวิดีโอของฉันใน LiveCoding.tv ไม่ได้ตั้งใจเป็นบทช่วยสอนหรือการนำเสนอ แต่แสดงคุณสมบัติล่าสุดบางอย่างที่ทำงานอยู่
บทความมีเทคนิคมากขึ้น:
บทความเหล่านี้มีตัวอย่างที่สามารถใช้งานได้ (ไม่ใช่ตอนนี้เนื่องจากไซต์ไม่สนับสนุนการดำเนินการของตัวอย่าง Haskell อีกต่อไป)
เมื่อความสามารถในการรวบรวมในขนาดใหญ่เป็นไปได้แล้วจะมีความคิดที่ไม่สิ้นสุดที่อาจเกิดขึ้นได้ มีเป้าหมายระยะสั้นและระยะยาว สถานะของการพัฒนาได้รับการตีพิมพ์เป็นประจำ
ในบรรดาคนที่บ้าที่สุดคือความเป็นไปได้ที่จะขยายกรอบนี้ไปยังภาษาอื่น ๆ และทำให้พวกเขาทำงานร่วมกันได้ การรักษาแอพพลิเคชั่นที่บรรจุทั้งหมดเป็นส่วนประกอบและเชื่อมต่อเป็นชิ้นเลโก้ในเลเยอร์ใหม่ของระบบปฏิบัติการที่เชลล์อนุญาตให้มีการเชื่อมต่อที่ปลอดภัยประเภทนี้ นักเทียบท่าที่ได้รับการแต่งตั้งนี้อนุญาตให้มีการรวมกันได้ทุกชนิดในขณะที่แพลตฟอร์ม Docker ปัจจุบันเป็นเพียงรูปแบบของ monoid ที่เสื่อมโทรมซึ่งไม่ได้คำนวณ
อยากมีส่วนร่วม? ตรวจสอบให้แน่ใจว่าคุณได้อ่านแนวทางผู้สนับสนุนของเรา เราต้องการได้ยินจากคุณและความคิดของคุณติดต่อกับผู้มีส่วนร่วมอื่น ๆ ผ่าน:
หน้าปัญหาสำหรับชั่วคราว
หน้าปัญหาสำหรับมานุษยวิทยา
หน้าปัญหาสำหรับความจริง
เมื่อคุณเรียนรู้สิ่งที่น่าสนใจคุณสามารถมีส่วนร่วมในวิกิ
นอกจากนี้คุณยังสามารถบริจาคให้กับนักพัฒนาซอฟต์แวร์เพื่อให้สามารถอุทิศเวลามากขึ้นในการเติมเต็มความได้เปรียบที่อาจเกิดขึ้นจากการเพิ่มซอฟต์แวร์ที่แท้จริงในสแต็คทั้งหมด