Haskell中的过载角括号作为内积运算符

时间:2018-02-28 06:25:22

标签: haskell

我想知道我是否可以超载尖括号'<'和'>'类似的东西:

from django.urls import path
from .views import subjects, units, lessons

urlpatterns = [
    path('subjects/', subjects, name='subjects'),
    path('units/<slug:slug>', units, name='units'),
    path('lessons/<slug:slug>', lessons, name='lessons'),
]

我知道我可以过载&#39;&lt;&amp;&gt;&#39;像运营商一样:

    <div class="blog-posts">
        <div class="row  text-center">
            {% for item in all_units %}
                <div class="col-sm-4 wow fadeInUp animated" data-wow-duration="1000ms" data-wow-delay="400ms"
                     style="visibility: visible;animation-duration: 1000ms;animation-delay: 400ms;animation-name: fadeInUp; margin-bottom: 15px">
                    <div class="post-thumb">
                        <a href="#"><img class="img-responsive" src="/static/img/blog/1.jpg" alt=""></a>
                    </div>
                    <div class="entry-header">
                        <h3><a href="{% url 'units' item.slug %}">{{ item.name }}</a></h3>
                        <span class="date">{{ item.created }}</span>
                    </div>
                    <div class="entry-content">
                        <p>{{ item.description|truncatechars:120 }}</p>
                    </div>
                </div>
            {% endfor %}
        </div>
    </div>

1 个答案:

答案 0 :(得分:8)

不,你真的不能这样做。哈斯克尔不是阿格达。 Haskell仅识别()[]{}括号。 ()仅用于元组类型和分组。 {}用于各种语法目的,没有一个可以控制。 []通常用于列表。您可以使用OverloadedLists和/或MonadComprehensions来影响列表语法的解释方式,但只能以有限的方式与您请求的内容相关联。没有办法说服Haskell <>是括号。您可能会做的唯一想法是使用Template Haskell处理您自己的语法,但这会增加其自身的语法开销。