在Haskell中,州是monad被传递以提取和存储状态.在以下两个示例中,两个都使用状态monad >>,并且密切验证(通过函数内联和缩减)确认状态确实传递到下一步.
然而,这似乎不是很直观.那么,这是否意味着,当我想通过国家单子我只需要>>(或>>=与lambda表达式\s -> a,其中s是不是免费的a)?任何人都可以为这一事实提供直观的解释,而无需减少功能吗?
-- the first example
tick :: State Int Int
tick = get >>= \n ->
put (n+1) >>
return n
-- the second example
type GameValue = Int
type GameState = (Bool, Int)
playGame' :: String -> State GameState GameValue
playGame' [] = get >>= \(on, score) -> return score
playGame' (x: xs) = get >>= \(on, score) ->
case x of
'a' | …Run Code Online (Sandbox Code Playgroud) 我使用maven构建项目,并使用JUnit进行测试。
当我尝试使用进行测试时SystemOutRule,我找不到此类,也找不到org.junit.contrib包。
ps My JUnit是最新版本4.12。
我的Maven pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd"
<modelVersion>4.0.0</modelVersion>
<groupId>com.Quentin.test</groupId>
<artifactId>test</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>test Maven Webapp</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.1.RELEASE</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId> …Run Code Online (Sandbox Code Playgroud) 我一直在使用vim一年,从未对下划线做任何改动.但突然间,vim开始强调几乎Haskell文件中的每个关键字.
我搜索了vimrc并没有找到任何专门为Haskell文件做的更改.
我的问题是,有没有办法关掉下划线?它在视觉上分散注意力并且令人讨厌.
haskell ×2
java ×1
junit ×1
maven ×1
monads ×1
state-monad ×1
system-rules ×1
testing ×1
vim ×1