小编Fth*_*der的帖子

Haskell(-1)数字问题

想象一下:

f = (*10) . (+1)
Run Code Online (Sandbox Code Playgroud)

这是一个简单的方法来添加1然后乘以10.现在检查以下内容:

f = (* 10) . (-1)
Run Code Online (Sandbox Code Playgroud)

-1是一个数字,而不是一个函数,我想知道是否有可用的函数来避免这种情况

\x -> x - 1
Run Code Online (Sandbox Code Playgroud)

或这个

flip (-) 1
Run Code Online (Sandbox Code Playgroud)

我知道他们是对的,但我不想让它成为那样.

haskell

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

Haskell - 构造如何从Monad调用失败函数?

在研究Monads时,我理解为什么当列表定义上的模式匹配失败时,它的计算会被"忽略"而不是抛出错误:

test :: [(Int, Int)]
test = [(x, y) | (Just x) <- [Just 1, Nothing, Just 3], y <- [1, 2]]

*Main> test
[(1,1),(1,2),(3,1),(3,2)]
Run Code Online (Sandbox Code Playgroud)

这是因为它只是一个语法糖Monad使用应用程序do:

test'' :: [(Int, Int)]
test'' = do
  (Just x) <- [Just 1, Nothing, Just 3]
  y <- [1, 2]
  return (x, y)

*Main> test'
[(1,1),(1,2),(3,1),(3,2)]
*Main> test == test'
True
Run Code Online (Sandbox Code Playgroud)

类似地,我们可以尝试使用bind运算符 类似于这个逻辑>>=:

test'' :: [(Int, Int)]
test'' = [Just 1, Nothing, …
Run Code Online (Sandbox Code Playgroud)

monads haskell list-definition syntactic-sugar

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

寻找和替换

有时我们想在列表中找到一个带有函数的元素a -> Bool并使用函数替换它a -> a,这可能会产生一个新的列表:

findr :: (a -> Bool) -> (a -> a) -> [a] -> Maybe [a]
findr _ _ [] = Nothing
findr p f (x:xs) 
  | p x = Just (f x : xs)
  | otherwise = case findr p f xs of Just xs -> Just (x:xs)
                                     _ -> Nothing
Run Code Online (Sandbox Code Playgroud)

主模块中是否有与此类似的功能?

api haskell

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

Haskell - 随机(mkStdGen 0) - 为什么没有显式类型?

表达式的类型random (mkStdGen 0)Random a => (a, StdGen),所以我试过:

System.Random> random (mkStdGen 0) :: (Int, StdGen)
(9106162675347844341,1346387765 2103410263)
System.Random> random (mkStdGen 0) :: (Double, StdGen)
(0.9871468153391151,1346387765 2103410263)
Run Code Online (Sandbox Code Playgroud)

但是,为什么以下工作呢?

System.Random> random (mkStdGen 0)
(9106162675347844341,1346387765 2103410263)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它如何"猜测"一种类型?

haskell

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

Yesod - 获取实体价值的功能

看一看:

myEntity :: Entity Post
myEntity = ...

myValue :: Entity Post -> Post
myValue = <someFunction>

myKey :: Entity Post -> PostId
myKey = <someOtherFunction>
Run Code Online (Sandbox Code Playgroud)

someFunctionsomeOtherFunction存在于yesod还是我需要创建它们?

haskell yesod

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

Haskell - 模块内的模块

我有一个这样的模块:

module Model where

import FlowType
  .
  . 
  .
Run Code Online (Sandbox Code Playgroud)

我正在使用FlowTypeinModel的主体,但我也想与模型的函数 FlowType 一起导出。我找到了一个具有以下语法的模块:

module Import
  ( module Import
  ) where

import Foundation as Import
  .
  . 
  .
Run Code Online (Sandbox Code Playgroud)

这是什么module Import ( module Import) where???我如何在我的Model模块中做同样的事情(并导出它自己的函数)?

haskell module yesod

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

标签 统计

haskell ×6

yesod ×2

api ×1

list-definition ×1

module ×1

monads ×1

syntactic-sugar ×1