小编Jon*_*len的帖子

Haskell - 提取可能在Monad

我正在研究Project Euler的第9个问题,我对在另一个monad中提取一个可能值的最佳方法有疑问.问题要求找到满足的'a','b','c':

  • a ^ 2 + b ^ 2 = c ^ 2
  • a + b + c = 1000

我编写了以下代码来解决问题:

problem9 :: (Integral a) => a -> [(a, a, a)]
problem9 n =
    do
        a <- [1..n]
        b <- [1..a]
        c <- fromJustM (findC a b)
        guard (a + b + c == n)
        return (a, b, c)
Run Code Online (Sandbox Code Playgroud)

'c'可以通过分析计算,但是,由于它可能不存在,我返回一个可能的值.

findC :: (Integral a) => a -> a -> Maybe a
findC a b = ... (implementation) ...
Run Code Online (Sandbox Code Playgroud)

要提取列表monad中的可能值,我创建了以下函数:

fromJustM …
Run Code Online (Sandbox Code Playgroud)

monads haskell

2
推荐指数
1
解决办法
215
查看次数

标签 统计

haskell ×1

monads ×1