either

    2熱度

    1回答

    我正在開發一種遊戲,使用大規模的編程風格,將整個狀態定義爲單個數據結構,並通過交換單個原子來管理狀態更改。 在遊戲中,我們不能相信客戶端發送的數據,因此服務器必須預見到一些動作會失效並防範它的可能性。當人們寫出一個交換世界狀態的函數時,它可以開始純粹;但是,必須考慮無效請求的可能性。我相信在慣用的Clojure中會產生不愉快的路徑,只會拋出異常。所以現在可能是純粹的功能會感染副作用的異常。也許th

    1熱度

    1回答

    我需要編寫一個程序,解碼四個值,它可以是我還是Ø成[Either Bool Bool]名單列表。我知道我必須使用也許,但我根本無法用頭圍住它。現在我完全絕望,因爲我根本無法解決這個問題。 一個例子輸入和輸出可能是這樣的:I,O,O,I] => [左真的吧假] 下面是當前代碼我有: module Blueprint where import Prelude import Data.Maybe

    1熱度

    1回答

    我有在Haskell數據類型有點問題,我想我應該先發布一些代碼來幫助理解這個問題 helper :: (MonadMask a, MonadIO a, Functor a) => Expr -> String -> a (Either InterpreterError Int) helper x y = (getEval (mkCodeString x y)) -- Creates Code

    0熱度

    2回答

    Either應該帶參數化功能嗎? case class FunOrSeq[T1, T2](e: Either[Function1[T1, T2], Iterable[T1]]) def f: Int => Int = x => x scala> FunOrSeq(Left(f)) <console>:11: error: type mismatch; found : scala.uti

    0熱度

    1回答

    所以,我有一個昂貴的方法與此簽名 def func(param: Int): \/[String, Int] 我試圖環比則params的列表並返回\/[String, List[Int]]但停止循環,只要該方法返回-\/ 。 我想出了這一點: scala> def func(i: Int) = { | if(i > 1) { println{"!!"} ;"error".left[I

    0熱度

    2回答

    我有Eithers val list: List[Either[String, Int]] = List(Right(5), Left("abc"), Right(42)) 結果列表,我想Right如果一切都在名單是Right否則我想要一個Left。這聽起來像列表應該有偏見(例如,使用Try),但我們假設它不是或不應該。 生成的Right或Left的內容將始終保持不變(例如一個字符串,請參見打

    15熱度

    6回答

    我想將兩個列表中的一個拆分爲List[Either[A, B]]。 有沒有更好的方法? def lefts[A, B](eithers : List[Either[A, B]]) : List[A] = eithers.collect { case Left(l) => l} def rights[A, B](eithers : List[Either[A, B]]) : List[B] = e

    1熱度

    1回答

    假設我需要調用遠程JSON/HTTP服務。我做了一個JSON請求,通過HTTP發送給服務器,並接收和解析JSON響應。 假設我有錯誤的數據類型MyError和我所有的函數返回Either[MyError, R] type Result[A] = Either[MyError, A] def makeJsonRequest(requestData: RequestData): Result[S

    0熱度

    1回答

    這是我以前的question的後續處理。假設我有以下功能: type Result[A] = Either[String, A] // left is an error message def f1(a: A): Result[B] = ... def f2(b: B): Result[C] = ... def f3(c: C): Result[D] = ... def f(a: A)

    10熱度

    2回答

    我有以下方法: firstRightOrLefts :: [Either b a] -> Either [b] a firstRightOrLefts eithers = case partitionEithers eithers of (_, (x : _)) -> Right x (xs, _) -> Left xs 讓我困擾的是醜陋的模式匹配,我想知