这里的两位非常简单的功能f和g.
{-# LANGUAGE ScopedTypeVariables #-}
module Test where
import Control.Applicative
f :: IO ()
f = do
y <- (<*>) (pure (show . (*10))) (read <$> readFile "data")
writeFile "out" y
g :: IO ()
g = do
y <- (readFile "data" >>= return . show . (*10) . read)
writeFile "out" y
Run Code Online (Sandbox Code Playgroud)
读取文件并*10在f写入应用性风格pure和(<*>).读取和*10输入的文件g是以monadic样式编写的>>=.(我一直在使用刻意避免liftM在g强调以下问题).
f和之间的语义差异是g什么?或者在这种情况下,它只是一种风格选择吗?
我有延伸的ScalaTest 2类GeneratorDrivenPropertyChecks,也间接地延伸FeatureSpec和Matchers(经由性状我写延伸这两个类).它有这样的代码:
forAll(mySequence) { myItem =>
myItem.applicationID should be (foo.applicationID)
}
Run Code Online (Sandbox Code Playgroud)
这无法编译,因为scalac说:
[error] APISpec.scala:253: value applicationID is not a member of Seq[com.company.Item]
[error] myItem.applicationID should be (foo.applicationID)
[error] ^
Run Code Online (Sandbox Code Playgroud)
事实证明,至少根据Eclipse Scala IDE,编译器正在解析"forAll",意思是这个方法,在GeneratorDrivenpropertyChecks:
/**
* Performs a property check by applying the specified property check function to arguments
* supplied by the specified generators.
*
* <p>
* Here's an example:
* </p>
*
* <pre class="stHighlight">
* import org.scalacheck.Gen
*
* // …Run Code Online (Sandbox Code Playgroud) 也许我有多年的偏见,svn但为什么我会想要与不同的分支合并然后在提交前做一些更改.该hg输出本身否则建议:
(branch merge, don't forget to commit)
Run Code Online (Sandbox Code Playgroud)
亲爱的hg,那你为什么不这样做呢?
所以问题很简单.给定一个图(我希望图的结构在这个问题上没有多大关系),我该怎么做呢?
我最近问过一个关于生成列表的问题,其中每个元素都会在其末尾附加许多元素.答案应该有希望让我做一个我需要做BFS的队列.但是搜索需要另一个关键组件,它将节点标记为已访问,因此我们不会再次检查它们.这也需要在算法的执行上没有开销.无论是标记还是阅读.
既然Haskell不允许我改变状态,那我该怎么做呢?
(我不是在寻找将命令式代码翻译成Haskell的方法.惯用的Haskell解决方案会非常棒.)
我在emacs下使用Intero来编辑我的新Haskell项目.我向我的代码添加了第三方库的导入,以查看Intero是否会自动添加必要的依赖项,但事实并非如此.所以我.cabal手动编辑了文件以添加必要的依赖项.现在我该怎么做 - 没有重启emacs?
我尝试cabal install --dependencies-only; cabal configure在命令行运行并且它们成功运行,但是flycheck缓冲区仍然显示错误.
我想将每个单词转换为十进制ascii。
例如“RESEP”:
R = 82,
E = 69,
S = 83,
E = 69,
P = 80
我的代码是:
val LIST_KEYWORD = List("RESEP",
"DAGING SAPI",
"DAGING KAMBING")
val RUBAH_BYTE = LIST_KEYWORD.map(_.split(",")).map
{
baris =>
(
baris(0).getBytes
)
}
Run Code Online (Sandbox Code Playgroud)
然后,我被卡住了,我不知道接下来应该做什么。
我有一些本地提交,并且对主人进行了更改.所以我做了一个:
git pull // it automatically merged and had a conflict with one file only.
subl <file> // Made the wrong fix and saved it
git commit // It opened nano and I Typed "fixed merge" saved it
git push master origin
Run Code Online (Sandbox Code Playgroud)
如何在拉动之前返回并重做合并并推送?特别是在合并之前回到右边.
这就是我在做的事情:
data Person = Person (IORef String) (IORef Int)
name <- newIORef "Boston"
age <- newIORef 100
p = Person name age
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以将它们放在一行中,例如:
p = Person (newIORef "Boston") (newIORef (100::Int))
Run Code Online (Sandbox Code Playgroud)
有没有办法把它们放在一行?
我正在努力学习Haskell,我正在玩IORef,我试图保存并查找记录.我的代码看起来像这样(注意我在这个例子中选择了"String"作为IORef类型只是为了方便和简介,在我的实际代码中我正在使用记录.而且还忽略我使用的是Set而不是一张地图,我会改变一下):
module MyTest where
import Data.IORef
import Data.Set
import Data.Foldable (find)
type State = (Set String)
type IORefState = IORef State
saveStringToState :: IO IORefState -> String -> IO String
saveStringToState stateIO string = do
state <- stateIO
atomicModifyIORef
state
(\oldStrings ->
let updatedStrings = insert string oldStrings
in (updatedStrings, updatedStrings))
stringsState <- readIORef state :: IO State
putStrLn ("### saved: " ++ show stringsState)
return string
findStringInState :: IO IORefState -> String -> IO (Maybe String)
findStringInState …Run Code Online (Sandbox Code Playgroud) 我试图通过查看一些软件基础练习(最初用于Coq,但我希望对Idris的翻译不太糟糕)来提高我的Idris技能.我在"练习:1星(plus_id_exercise)"中遇到问题,其中包括:
删除"已录取".并填写证明.
Run Code Online (Sandbox Code Playgroud)Theorem plus_id_exercise : ? n m o : nat, n = m ? m = o ? n + m = m + o. Proof. (* FILL IN HERE *) Admitted.
我在Idris中翻译成以下问题:
plusIdExercise : (n : Nat) ->
(m : Nat) ->
(o : Nat) ->
(n == m) = True ->
(m == o) = True ->
(n + m == m + o) = True
Run Code Online (Sandbox Code Playgroud)
我正在尝试逐个案例分析,我遇到了很多问题.第一种情况:
plusIdExercise Z Z Z n_eq_m n_eq_o …Run Code Online (Sandbox Code Playgroud) haskell ×5
merge ×2
monads ×2
scala ×2
applicative ×1
ascii ×1
emacs ×1
git ×1
graph-theory ×1
haskell-mode ×1
idris ×1
intero ×1
ioref ×1
mercurial ×1
proof ×1
scalacheck ×1
scalatest ×1
shared-state ×1