You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建支持中缀调用的匿名函数?(ngn/k及K方言适用)

实现K语言中缀形式的匿名函数调用

在ngn/k及多数K方言中,默认只有单字符符号类的二元函数支持中缀调用(如内置的+、*),字母命名的函数则默认是前缀调用形式。要实现2 f 3这类中缀调用,可通过以下几种方式:

1. 绑定匿名函数到符号运算符

选择一个未被内置功能占用的单字符符号(如~、^,注意避免覆盖常用运算符),将匿名函数赋值给它,即可直接用中缀形式调用:

~:{x+y}  / 将加法匿名函数绑定到~符号
2 ~ 3    / 中缀调用,输出5

如果需要临时使用,用完后可以恢复原符号的功能(比如~原本是逻辑非,可重新赋值~:{!x})。

2. 利用命名空间语法(kdb+/ngn/k通用)

通过命名空间前缀的语法,也可以实现类中缀的调用形式,无需覆盖符号:

.f:{x+y}  / 将函数定义在根命名空间下
2 .f 3    / 中缀风格调用,输出5

这种方式适合不想修改内置符号的场景,.f本质是命名空间中的函数,K语法支持x .func y的二元调用形式。

3. 自定义中缀包装器(通用方案)

如果需要更灵活的方式,可以写一个通用的中缀包装函数,用来传递匿名函数:

@:{[x;f;y] f[x;y]}  / 定义包装器@,接收左值、函数、右值
2 @ {x+y} 3         / 中缀风格调用匿名函数,输出5

这里的@可以替换成任意未被占用的符号或标识符,包装器的作用是将前缀调用的函数转换为中缀形式。

内容的提问来源于stack exchange,提问作者Fmbalbuena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:12:44