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

hey*_*yyo 0 haskell

我试过谷歌搜索它,但我找不到一个简单的解释.谁能解释一下这个功能是如何工作的

import Data.Char

encode :: Int -> String -> String
encode offset msg = map (chr . (+ offset) . ord) msg
Run Code Online (Sandbox Code Playgroud)

我知道它正在映射(chr . (+ offset) . ord)函数msg,但内部发生了什么(chr . (+ offset) . ord).

Mar*_*ici 8

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

1. ord
2. (+ offset)
3. chr
Run Code Online (Sandbox Code Playgroud)

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

function encodeChar(int ord)
{
    x = ord
    y = x + offset
    z = chr y
    return z
}
Run Code Online (Sandbox Code Playgroud)

(+ offset)notiation给出了一个功能,因为+有两个参数,一个是被应用.另一个尚未应用.所以你得到一个Int -> Int功能.

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