我最近开始使用Haskell学习函数式编程,并在官方的Haskell wiki上发表了这篇文章:如何阅读Haskell.
文章声称,短变量名如x,xs,和f被嵌合因为简洁和抽象为Haskell代码.从本质上讲,它声称函数式编程是一种独特的范式,其他范式的命名约定不适用.
你对此有何看法?
haskell functional-programming coding-style naming-conventions verbosity
Python文档包含创建HTTP服务器的示例:
def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
server_address = ('', 8000)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)
RequestHandler提供了一个类Server,然后负责自动实例化处理程序.
假设我想在创建请求处理程序时将自定义参数传递给它.我该怎么做?
更具体地说,我想从命令行传入参数,并且必须访问sys.argv请求处理程序类内部似乎不必要地笨拙.
看起来这应该是可以通过覆盖Server类的部分,但我觉得我忽略了一个更简单和更好的解决方案.
在访问令牌,刷新令牌,范围,受众和客户ID之间,当Google OAuth文档指示我验证所有令牌以防止混淆的代理问题时,我感到很困惑.链接到的维基百科文章仅描述了高级别的一般问题,而不是特定于OAuth甚至网络身份验证.如果我理解正确,令牌验证甚至不是OAuth2的一部分,但实际上取决于具体的实现.所以这是我的问题:
Google OAuth令牌验证的执行方式和原因是什么?
在这种情况下,混淆的代理问题的具体例子将特别受到赞赏.另请注意,我在完全客户端应用程序的上下文中询问这一点,如果这有所不同.
在Google Drive API的快速入门指南中,一旦加载了客户端库,就会调用以下函数:
// Called when the client library is loaded to start the auth flow.
function handleClientLoad() {
window.setTimeout(checkAuth, 1);
}
Run Code Online (Sandbox Code Playgroud)
setTimeout以这样的延迟1呼叫而不是checkAuth立即呼叫的目的是什么?
我正在尝试澄清与REST可发现性相关的概念 - 即是否满足RESTful服务的HATEOAS约束意味着现在URI可以更改,因为它们是可发现的并且没有记录.
这似乎不遵循Cool URI的概念- URI永远不会改变的事实.它与网络本身的模型(REST应该基本上完全适合)有点不一致 - 这个URL是可收藏的,永远不会改变的事实,而且你曾经学过一个这样的事实,你可以直接进入它,你可以做到这一点不必经过根,每次都发现它.
任何有关此的反馈表示赞赏.
使用该display属性,HTML元素可以从样式角度进行互换.这似乎并不成为案件fieldset和legend,但是.
是否有可能样式其他HTML元素的样子fieldset和legend?
我知道我在这里遗漏了一些东西.在下面的XSLT转换中,实际结果与期望的结果不匹配.
在里面for-each,我想将match="track"模板应用于每个选定的track元素.如果我已正确理解XSLT,那么在当前设置中,每个所选track元素的子节点只与模板匹配,而不是track元素本身.
如何track根据需要使元素通过模板?我是否需要重新考虑我的整个方法?
注意:转换是使用PHP执行的.为简洁起见,省略了XML声明.
XML文档:
<album>
<title>Grave Dancers Union</title>
<track id="shove">Somebody To Shove</track>
<track id="gold">Black Gold</track>
<track id="train">Runaway Train</track>
<producer>Michael Beinhorn</producer>
</album>
Run Code Online (Sandbox Code Playgroud)
XSL样式表:
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/album">
<ol>
<xsl:for-each select="track">
<li><xsl:apply-templates/></li>
</xsl:for-each>
</ol>
</xsl:template>
<xsl:template match="track">
<a href="{@id}"><xsl:apply-templates/></a>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
结果:
<ol>
<li>Somebody To Shove</li>
<li>Black Gold</li>
<li>Runaway Train</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
期望的结果:
<ol>
<li><a href="shove">Somebody To Shove</a></li>
<li><a href="gold">Black Gold</a></li>
<li><a href="train">Runaway Train</a></li>
</ol>
Run Code Online (Sandbox Code Playgroud) 假设我正在将多项选择测验从任意XML格式转换为HTML.每个选项都将<li>在结果文档中表示为HTML 标记.对于每一个选择,我想添加一个HTML class的correct到<li>,如果这样的选择是正确的答案.此外,如果选择是由用户选择的一个,我想补充的一个类submitted的<li>.因此,如果选择的是正确的,以及所提交的之一,<li>应该有一个class的correct submitted.
据我所知,空格分隔的属性值不是XML数据模型的一部分,因此无法通过XSLT直接创建.但是,我觉得有一种更好的方法可以做到这一点,而不是为每个可能的类组合用一个条件乱码(在这个例子中这是可以接受的,但在更复杂的场景中是不实用的).
我怎样才能以优雅的方式解决这个问题?
期望结果的示例:
<p>Who trained Obi-Wan Kenobi?</p>
<ul>
<li>Mace Windu</li>
<li class="correct submitted">Qui-Gon Jinn</li>
<li>Ki-Adi-Mundi</li>
<li>Yaddle</li>
</ul>
Run Code Online (Sandbox Code Playgroud) 对于我的算法和数据结构类,我的任务是在Haskell中实现一个splay树.我的splay操作算法如下:
根据我老师的说法,这是有效的.然而,维基百科对splay树的描述说zig步骤"将仅作为splay操作的最后一步",而在我的算法中,它是splay操作的第一步.
我想实现一个splay树,它最后执行zig操作而不是第一个,但我不确定如何最好地完成它.在我看来,这样的算法会变得更加复杂,看看在确定是否应该执行zig操作之前,需要如何找到要展开的节点.
我如何在Haskell(或其他一些函数式语言)中实现它?
在这个例子中,我们搜索值4,提示我们将它展开到树的顶部.
1 1 4
\ \ /
2 zig 2 zig-zig 2
\ --> \ ------> / \
3 4 1 3
\ /
4 3
1 1 4
\ \ /
2 zig-zig 4 zig 1
\ ------> / --> \
3 3 3
\ / /
4 2 2
两棵树都有效,但它们有不同的结构.我想用函数式语言实现第二个,最好是Haskell.
我的Google Drive集成Web应用程序可以在drive范围内正常运行,但除非必要,否则使用如此广泛的范围是不好的做法.我想限制范围,drive.file以便我只能访问由应用程序创建的文件和使用Google Picker打开的文件,但我无法使其工作.
可以毫无问题地打开应用程序创建的文件.但是,使用Google Picker打开的文件无法访问; 尝试下载此类文件会导致404错误.当我右键单击Google云端硬盘中的文件并选择"查看授权的应用"时,我的应用程序未被列为授权应用之一.
如果范围扩展到,则代码可以正常工作drive.
我编写了一个最小的测试页面,该页面应该下载用户在Google Picker中选择的文件.可以通过调用auth()后跟来启动该过程showPicker().代码的关键部分如下:
gapi.auth.authorize({
client_id: '123456789012.apps.googleusercontent.com',
scope: 'https://www.googleapis.com/auth/drive.file',
immediate: false
});
...
var picker = new google.picker.PickerBuilder()
.setAppId('123456789012')
.addView(new google.picker.DocsView(google.picker.ViewId.DOCS_IMAGES))
.setOAuthToken(gapi.auth.getToken().access_token)
.setCallback(onPickerAction)
.build();
picker.setVisible(true);
...
function onPickerAction(data) {
if ( data.action === google.picker.Action.PICKED ) {
var id = data.docs[0].id;
var request = new XMLHttpRequest();
request.open('GET', 'https://www.googleapis.com/drive/v2/files/' + id);
request.setRequestHeader('Authorization', 'Bearer ' + gapi.auth.getToken().access_token);
request.addEventListener('load', function() {
var item = JSON.parse(request.responseText); …Run Code Online (Sandbox Code Playgroud) 对于线性代数中的家庭作业,我使用MATLAB的\运算符(这是推荐的方法)解决了以下等式:
A = [0.2 0.25; 0.4 0.5; 0.4 0.25]; y = [0.9 1.7 1.2]'; x = A \ y
产生以下答案:
x = 1.7000 2.0800
对于赋值的下一部分,我应该使用最小二乘近似来求解相同的等式(然后将其与先前值进行比较以查看近似的精确度).
如何在MATLAB中找到这样做的方法?
以前的工作:我找到了函数lsqlin,它似乎能够解决上述类型的方程,但我不明白哪个参数提供它,也不知道它的顺序.
当我评估下面的表达式时,结果完全不同,具体取决于评估顺序以及是否分配值:
$a = true;
$b = false;
var_dump($a and $b); // false
$c = $a and $b;
var_dump($c); // true
$d = $b and $a;
var_dump($d); // false
Run Code Online (Sandbox Code Playgroud)
我完全难过了.为什么会这样?
html ×3
haskell ×2
javascript ×2
xslt ×2
boolean ×1
class ×1
class-names ×1
coding-style ×1
css ×1
fieldset ×1
foreach ×1
google-oauth ×1
hateoas ×1
legend ×1
math ×1
matlab ×1
php ×1
python ×1
rest ×1
restful-url ×1
settimeout ×1
splay-tree ×1
uri ×1
verbosity ×1