dot和plus运算符是什么意思?

时间:2016-04-20 01:20:23

标签: haskell

我尝试使用谷歌搜索但我无法找到一个简单的解释。有人可以解释这个功能是如何工作的吗?

import Data.Char

encode :: Int -> String -> String
encode offset msg = map (chr . (+ offset) . ord) msg

我了解它将(chr . (+ offset) . ord)函数映射到msg,但(chr . (+ offset) . ord)内发生了什么。

1 个答案:

答案 0 :(得分:8)

首先要注意的是有3个功能组合在一起,并按此顺序组成:

1. ord
2. (+ offset)
3. chr

第一个将字符转换为数字。第二个将为数字添加偏移量。第三个将数字转换回一个字符。链接在一起他们按照命令式的方式行事:

function encodeChar(int ord)
{
    x = ord
    y = x + offset
    z = chr y
    return z
}

(+ offset)通知给出了一个函数,因为+有两个参数,一个正在应用。另一个尚未应用。所以你得到一个Int -> Int函数。

组合的三个函数给出一个函数,该函数接受Char并返回Char,因此可以映射到Char的列表,即String