热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

ViewPatterns范围界定背后的推理

如何解决《ViewPatterns范围界定背后的推理》经验,为你挑选了1个好方法。

今天我遇到了一个奇怪的问题.模式匹配没有看到在where子句下定义的函数.

foo (bar -> 1) = 2
  where
    bar _ = 1

此代码拒绝编译声明变量bar不存在.

当然,这是一个简单的解决方案,但我对这种范围规则背后的推理感兴趣.



1> amalloy..:

我不是视图模式的专家,我也不参与创建它们,所以我不能告诉你"为什么它们是这样做的",但我确实知道为什么它们以这种方式更好地工作.

where子句引入的绑定在单个模式中范围内,而不是作为整体的函数,并且where子句中的绑定可以访问由封闭模式引入的绑定.

对于普通模式,这很有效,因为您可以通过查看其构造函数来判断模式是否匹配,如果是这样,您可以将模式的where子句放入范围,如果需要还可以检查模式保护等.

但对于视图模式,这有点怪异:where子句中引入的函数可能依赖于模式的绑定,但为了甚至匹配视图模式,您还必须具有该where子句的绑定.

也许有办法解决这个循环依赖(我不知道),但它肯定会让我感到困惑.


推荐阅读
author-avatar
wy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有