在线运行 Haskell
在浏览器中编写、编译并运行 Haskell 代码,适合学习、练习与快速验证。
Haskell 代码编辑器
输出
标准输出(stdout)
标准错误(stderr)
执行信息
退出码:
运行状态:
使用说明
- 在左侧编辑器编写 Haskell 代码(定义
main :: IO ()并实现入口)。 - 点击“运行代码”即可在线编译并执行程序。
- 右侧面板展示输出与错误信息。
- 绿色区域为标准输出(例如
putStrLn输出)。 - 红色区域为编译/运行错误与警告。
- 执行信息包含退出码与运行状态。
- 快捷键:
Ctrl+Enter(Mac 上为Cmd+Enter)。
Haskell 基础
Hello World:
main :: IO ()
main = putStrLn "Hello, Haskell!"
main = putStrLn "Hello, Haskell!"
常用类型:
Int/Integer/DoubleBool/Char/String- 列表
[a]与元组(a,b) - Maybe / Either 等代数数据类型
模式匹配与递归
示例:
factorial :: Integer -> Integer
factorial 0 = 1
factorial n = n * factorial (n - 1)
factorial 0 = 1
factorial n = n * factorial (n - 1)
高阶函数
map / filter / fold:
let xs = [1,2,3,4]
print (map (*2) xs)
print (filter odd xs)
print (foldl (+) 0 xs)
print (map (*2) xs)
print (filter odd xs)
print (foldl (+) 0 xs)
IO 与字符串
示例:
main :: IO ()
main = do
let name = "Alice"
putStrLn ("Hello, " ++ name)
main = do
let name = "Alice"
putStrLn ("Hello, " ++ name)
示例程序(点击上方运行)
1. 递归计算阶乘
factorial :: Integer -> Integer
factorial 0 = 1
factorial n = n * factorial (n - 1)
main :: IO ()
main = print (factorial 5)
factorial 0 = 1
factorial n = n * factorial (n - 1)
main :: IO ()
main = print (factorial 5)
2. 列表最大值
myMax :: Ord a => [a] -> a
myMax [x] = x
myMax (x:xs) = max x (myMax xs)
main :: IO ()
main = print (myMax [3,7,1,9,4])
myMax [x] = x
myMax (x:xs) = max x (myMax xs)
main :: IO ()
main = print (myMax [3,7,1,9,4])