Ответ 1
В принципе, я не уверен, что есть что-то, препятствующее включению F # из более высоких типов; CLR не поддерживает их самостоятельно, поэтому потребуется использовать более косвенную стратегию компиляции, но также и для Scala на JVM. Это может быть сложнее или сложнее сделать это поверх генерируемых генерических средств CLR, но я подозреваю, что причина, по которой F # не включает их, более философская. В то время как более высокие типы типов были бы хороши, дизайн F # имеет тенденцию поддерживать простые функции, которые хорошо взаимодействуют с другими языками .NET; более высокие типы типов, вероятно, потребуют значительных усилий для добавления к языку, усложнят вывод типа и другие части языка и, безусловно, не будут хорошо взаимодействовать с С# и другими .NET-языками, поэтому затраты (включая альтернативные издержки), вероятно, были восприняты перевесить преимущества.