Haskell не очень хорошо сработает в .NET без каких-либо значительных изменений в среде выполнения или, возможно, действительно умного компилятора.
Может быть, все изменится, когда контракты кода проникнут больше, но сейчас даже функции, которые на самом деле чисты в поведении, такие как функции манипуляции со строками, должны были бы быть доступны через IO - так что это просто не стоило бы того на все.
Это и есть проблемы с оптимизацией - например, .NET не выполняет оптимизацию для неизменяемых объектов, поэтому списки (последовательности, как они называются в F #, или IEnumerable, как они вызываются в C #) не будут не так эффективно.
Компилятор Haskell IL может быть выполнимым, как то, что выплевывает сборки .NET вместо x86 .exes / .dlls.