use ([,type]) to represent tuple. for example, the fillOrder function in [0x 2.0][1]: function fillOrder( LibOrder.Order memory order, uint256 takerAssetFillAmount, bytes memory signature ) public returns (LibFillResults.FillResults memory fillResults); the function selector is calculated using: fillOrder((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),uint256,bytes) which the keccak-256 is: b4be83d519a652e54a6073d7e55643f575508112b09dcc74264b807477b576c5, the first 4 bytes is: b4be83d5 and you can confirm this by looking at this tx which called fillOrder: https://etherscan.io/tx/0x4811b7492bd845a46a052b063f943c4760174e932cb171ca25a934de6e7e4da4 [1]: https://etherscan.io/address/0x4f833a24e1f95d70f028921e27040ca56e09ab0b#code