Avatar
コンピュータ上でのテキストとして表記する場合、フォントによっては↑のような記号が無い場合もあるため、a^^bのようにサーカムフレックスを並べる表記を行う場合がある。クヌース自身も、これを代替的あるいは簡便な記法として認めている。 https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%8C%E3%83%BC%E3%82%B9%E3%81%AE%E7%9F%A2%E5%8D%B0%E8%A1%A8%E8%A8%98 Swift で作ってみた。 ^ は別の演算子なので Python 等に倣って ** で代用。 precedencegroup UpArrowPrecedence { higherThan: MultiplicationPrecedence associativity: right } infix operator ** infix operator ^^ infix operator ^^^ func **(lhs: Int, rhs: Int) -> Int { return uparrow(lhs, rhs, *) } func ^^(lhs: Int, rhs: Int) -> Int { return uparrow(lhs, rhs, **) } func ^^^(lhs: Int, rhs: Int) -> Int { return uparrow(lhs, rhs, ^^) } private func uparrow(_ lhs: Int, _ rhs: Int, _ operation: (Int, Int) -> Int) -> Int { precondition(rhs >= 0) var result = 1 for _ in 0..<rhs { result = operation(lhs, result) } return result } print(2 ** 3) // 8 print(2 ^^ 3) // 16 print(2 ^^^ 3) // 65536
🙌 1