小编Jon*_*caC的帖子

如何将两个参数的Haskell函数重写为无点样式

我在Haskell中有以下功能

agreeLen :: (Eq a) => [a] -> [a] -> Int
agreeLen x y = length $ takeWhile (\(a,b) -> a == b)  (zip x y)
Run Code Online (Sandbox Code Playgroud)

我正在努力学习如何编写'惯用'Haskell,它似乎更喜欢使用.$不是括号,并且在可能的情况下更喜欢无点代码.我似乎无法摆脱提及xy明确.有任何想法吗?

我认为我对点两个参数的任何函数都有同样的问题.

顺便说一下,这只是为了编写好的代码; 不是一些"使用任何必要的东西来使其无意义"的家庭作业.

谢谢.


(添加评论)感谢您的回答.你已经说服我这个功能不会从pointfree中受益.而且你也给了我一些很好的例子来练习转换表达式.这对我来说仍然很困难,而且它们似乎与Haskell一样重要,因为它指向C.

haskell pointfree

25
推荐指数
2
解决办法
5189
查看次数

如何创建在与shell相同的进程中运行的Powershell别名(或函数或cmdlet)?

在Unix中,我创建了很多别名/函数.这是我的工作流程:

* I have a file named 'aliases.txt' in my $HOME directory
* I have a quick command to edit that file
* I have an alias named 'sa' that sources that alias file. I.e.

  alias sa='. $HOME/aliases.txt
Run Code Online (Sandbox Code Playgroud)

因此,我可以快速轻松地创建,修改和使用新别名.

我试图在Powershell中重新创建相同的工作流程,但它不起作用.我的$ HOME目录中有aliases.ps1文件.我尝试创建一个'sa'别名,但当然Powershell别名不能包含参数.所以我试过了

function sa {. $HOME\aliases.ps1 }
Run Code Online (Sandbox Code Playgroud)

我可以运行它,但我的aliases.pl1文件中的更改不会反映在我的shell会话中.我假设它是因为Windows在新进程中运行'sa'函数,而Unix在同一进程中运行函数和别名.我怎样才能让我的'sa'回来?

(BTW,"每次在命令行输入'.$ HOME\aliases.ps1'"不是我正在寻找的答案.

提前致谢.

windows powershell process

4
推荐指数
1
解决办法
4123
查看次数

为什么这个Perl代码不是错误的

我正在写一个WxPerl程序,而不是

$panel->SetDropTarget( MyTextDropTarget->new($panel) );
Run Code Online (Sandbox Code Playgroud)

我写

$panel->SetDropTarget->( MyTextDropTarget->new($panel) );
Run Code Online (Sandbox Code Playgroud)

并且Perl没有抱怨.(Perl使用一些参数调用了一些函数,并且脚本错误输出并显示错误消息:

用法:位于./x.pl第230行的Wx :: Window :: SetDropTarget(THIS,target).

我很好奇Perl如何解析'错误'版本.

新增编辑:

好的,所以如果$ x = \&some_function,那么我理解为什么

$x->($arg1, $arg2, ...)
Run Code Online (Sandbox Code Playgroud)

调用some_function($ arg1,$ arg2,.....).

runrig的例子是一种可能性,但我很确定:1)$ panel包含一个受祝福的对象引用,而不是一个字符串.2)SetDropTarget是$ panel的一个方法(在基类中).

从错误消息中我们可以假设正在调用SetDropTarget().如果runrig的例子在这里仍然适用(我猜它确实如此),那么即使SetDropTarget后面没有括号,即我有

$panel->SetDropTarget->
Run Code Online (Sandbox Code Playgroud)

代替

 $panel->SetDropTarget()->
Run Code Online (Sandbox Code Playgroud)

Perl还在调用SetDropTarget吗?(检查其参数的数量和类型,然后在运行时致命抱怨).这是怎么回事?

syntax perl

4
推荐指数
2
解决办法
185
查看次数

标签 统计

haskell ×1

perl ×1

pointfree ×1

powershell ×1

process ×1

syntax ×1

windows ×1