小编Ada*_*ies的帖子

Travis根据矩阵参数进行部署

我有一个可以在Linux和OSX上运行的travis作业,我希望能够使用它为GitHub发行版的每个平台部署不同的构建工件。我的.travis.yml文件当前看起来像这样:

language: rust

cache: cargo

os:
  - linux
  - osx

rust: 
  - stable
  - beta
  - nightly 

script: 
  - cargo build --release -vv
  - cargo test --release --all -vv

matrix:
  allow_failures:
    - rust: nightly
  fast_finish: true

deploy:
  - provider: releases
    skip_cleanup: true
    api_key:
      secure: <encrypted key here, removed for brevity> 
    before_deploy: 
      - cargo install cargo-deb
      - cargo deb --no-build --no-strip
      - ./scripts/package_linux.sh .
    file_glob: true
    file: 
      - "target/debian/ellington_0.1.0_amd64.deb"
      - "releases/*_linux.zip"
    on:
      tags: true
      os: …
Run Code Online (Sandbox Code Playgroud)

release release-management travis-ci github-release

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

在haskell程序中使用返回的EitherT

我正在尝试在我正在使用的Haskell项目中使用"citation-resolve"包,但是我无法在实际代码中使用EitherT.我知道他们是monad变形金刚,我想我明白这意味着什么,但我似乎无法真正弄清楚如何使用它们.代表我正在尝试做的玩具示例如下:

module Main where
import Text.EditDistance
import Text.CSL.Input.Identifier
import Text.CSL.Reference
import Control.Monad.Trans.Class 
import Control.Monad.Trans.Either 

main = do
    putStrLn "Resolving definition"
    let resRef = runEitherT $ resolveEither "doi:10.1145/2500365.2500595"
    case resRef of 
                Left e -> do 
                    putStrLn ("Got error: "++ e)
                Right ref -> do
                    putStrLn ("Added reference to database: "++ (show ref))
Run Code Online (Sandbox Code Playgroud)

这里resolveEither有类型:

resolveEither :: (HasDatabase s,
                  Control.Monad.IO.Class.MonadIO m,
                  mtl-2.1.3.1:Control.Monad.State.Class.MonadState s m)
                   => String -> EitherT String m Reference
Run Code Online (Sandbox Code Playgroud)

runEitherT $ resolveEither "ref"有类型:

runEitherT $ resolveEither "ref" …
Run Code Online (Sandbox Code Playgroud)

monads haskell monad-transformers either io-monad

4
推荐指数
2
解决办法
470
查看次数