jjzjj

pointfree

全部标签

ruby - 如何将 Ruby 方法变成 block ?

有没有办法简化下面的代码?filenames是文件名(字符串)的列表,例如["foo.txt","bar.c","baz.yaml"]filenames.map{|f|File.size(f)}有什么方法可以将“File.size”变成一个过程或block吗?对于现有对象的方法,我可以执行&:method。模块级方法是否有类似的东西? 最佳答案 您可以使用Object#method(method_name):filenames.map(&File.method(:size)) 关于rub

javascript - 免点调试

所以我们使用非常好的ramda工作中的库,这很棒,因为我们能够使用基本上无点的代码风格。这样做的问题是,当出现问题时,指向我们代码中某些东西的地方要少得多;大多数运行时错误的发生是因为误用了组合的ramda函数。将其与将这些函数传递给一个使用大量重定向的框架(我们在react/redux上)相结合,并且通常当出现问题时,它在仅限库的代码中很深,很难找出我去了哪里错了。有没有办法在不放弃无点样式的情况下缓解这个问题? 最佳答案 一种选择是使用R.tap,像这样:constf=R.pipe(R.tap(console.log),//lo

javascript - 如何在 JavaScript 中使用 pointfree 风格而不失可读性?

当我尝试以pointfree风格编写JavaScript时,我发现如果强制每个函数都采用这种风格,有时会失去其可读性。例如:importRfrom'ramda'constceil=Math.ceilconstpagination={total:101,itemsPerPage:10,currentPage:1}//=================Pointfulstyle==================constpageCount=(pagination)=>{constpages=ceil(pagination.total/pagination.itemsPerPage)con

javascript - 这是javascript中功能镜头的一个地方吗?

玩转point-freestyleJavaScript的乐趣。假设我正在编写视频游戏暗黑破坏神,我正在使用像这样但更深更复杂的复杂嵌套类型为敌人建模:{name:"badguy1",stats:{health:10:strength:42},pos:{x:100,y:101}}所以我有一个所有敌人的列表。我想对一定范围内的所有敌人造成伤害functionisInRange(radius,point){returnpoint.x^2+point.y^2>=radius^2;}functionfireDamage(health){returnhealth-10;}varnewEnemies

javascript - 使用 Ramda 的无点样式大写函数

虽然编写大写函数很简单,例如:“你好”=>“你好”“你好”=>“你好”如何使用RamdaJS使用无点样式来编写它?https://en.wikipedia.org/wiki/Tacit_programming 最佳答案 您可以使用在第一个字符上运行toUpper的正则表达式部分应用replace:constcapitalize=R.replace(/^./,R.toUpper); 关于javascript-使用Ramda的无点样式大写函数,我们在StackOverflow上找到一个类似的

python - Python 中的 Pointfree 函数组合

我有一些谓词,例如:is_divisible_by_13=lambdai:i%13==0is_palindrome=lambdax:str(x)==str(x)[::-1]并想在逻辑上将它们组合起来,如下所示:filter(lambdax:is_divisible_by_13(x)andis_palindrome(x),range(1000,10000))现在的问题是:这样的组合能不能写成pointfree样式,例如:filter(is_divisible_by_13andis_palindrome,range(1000,10000))这当然没有达到预期的效果,因为lambda函数的真