haskell - 用 - in haskell 加入两个 IO
问题描述
我需要在中间加入两个IO String
s -
。这是我想出的,可行的方法-正确的方法是什么?
import System.Environment
f :: String -> String -> IO String
f x y = (foldl1 (++)) <$> sequence [(getEnv x),(return "-"),(getEnv y)]
解决方案
您可以在这里使用应用样式功能:
f :: String -> String -> IO String
f x y = withHyp <$> getEnv x <*> getEnv y
where withHyp ex ey = ex ++ '-' : ey
所以这里我们将两个String
s 连接起来,然后通过withHyp
函数在中间用连字符连接起来。
或者对于我们需要获取的环境变量列表,我们可以使用mapM
并执行intercalate
:
import Data.List(intercalate)
f :: [String] -> IO String
f xs = intercalate "-" <$> mapM getEnv xs
推荐阅读
- python - 仅当出现在特定模式之后的字符才从 HTML 字符串中删除
- node.js - 访问令牌与刷新令牌 NodeJS
- angular - 离子/角度ngFor和点击功能
- java - 如何从 MYSQL 存储过程中调用 Java 文件?
- asp.net - 带有必需字段验证器的 AJAX 手风琴崩溃
- node.js - 如何优化firebase函数的响应速度
- ldap - 389 目录服务器创建vlv索引而不停止服务器?
- c++ - 未能优化看似明显的循环不变量(但 volatile 限定符确实有魔力)
- sql - 带有 NULL 的单个表结果的 SQL 子查询
- android - 关闭应用程序时,Internet Connection Changed Broadcast Receiver 未执行