Pergunta

Eu estou tentando mudar

function (x:xs) = unwords (map reverse (words (x:xs)))

no ponto em estilo livre, e eu não posso fazer isso.

não é simplesmente

function = unwords . map . reverse . words

Por favor, ajuda-me a mudar este ponto de free style.

Eu tentei usar pointfree depois de fazer abaixo de linha de comando

cabal install pointfree

Tudo compilado e instalado, mas quando eu digito pointfree no terminal, ele sempre dizendo que não há nenhuma tal coisa.

Foi útil?

Solução

Sua definição é quase correto e pode ser testado no ghci intérprete, deve ser

ghci> let function = unwords . map reverse . words
ghci> function "The quick brown fox"
"ehT kciuq nworb xof"

porque reverse é um argumento do mapa.Basicamente, para alterar pipeline-como função de foo a3 = f a1 (g a2 (h a3)) (consistindo de chamadas de função aninhada) em pointfree, onde explicita o argumento (a3 neste caso) é a última chamada, você precisará removê-lo e substituir parênteses aninhados com . composição do operador: foo = f a1 . g a2 . h.No entanto, esse truque não funciona quando há vários argumentos ou o argumento é usado mais de uma vez.Para meaningly operar com pointfree funções, você deve entender combinatória lógica.

EDITAR:oh, eu tenho o que você tentou usar a linha de comando pointfree ferramenta a auto-transformar a função.Binários compilados com cabal são colocados no diretório específico (por exemplo, C:\Users\Username\AppData oaming\cabal\bin no Windows, AFAIR), o que, provavelmente não é adicionado ao CAMINHO por padrão e por isso interpretador de linha de comando não pode encontrar o arquivo executável.

Outras dicas

reverse é um argumento de map, assim , você não tem para compor map com reverse, mas você deseja para compor o pleno map reverse com as outras funções.

A maneira correta de fazer isso é:

function = unwords . map reverse . words
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top