Bazı F # kodu ile this çevrimiçi derleyiciyi kullanarak oynuyordum (Tam olarak F # derleyici sürümünü bulamadım, bu daha sonra alakalı olacak). Neden '! =' Kullanımı belirsiz olarak değerlendiriliyor ama '=' kullanımı benzer değil?
let f x y = x = y
let g x y = x != y
f
g
değildi: Aşağıdaki iki işlev çok farklıydı fark etti.
g 1 2
çağrılması mesajı içeren bir derleme hatasına neden olur:
genel bir yapı tipi 'int' referans anlambilim var, ama ben gittim bir yapı
olup yani Götürmezse gerektirir
hata FS0332: Ben
g
tanımlamaya çalışırken bu benim kendi makinede çalıştı (mono F # 3.0 kullanarak, ama Visual Studio 2012 aynı sonucu almak) ve bambaşka bir hata aldı çözülemedi muğlaklık Bu program noktasında veya yakınında operatörün '(! =)' kullanımı. Belirsizliği gidermek için tür ek açıklamaları kullanmayı düşünün.
Neden bu kullanım !=
belirsiz ve neden bir hata? Ayrıca, neden !=
'un bu kullanımının neden belirsiz olduğu, ancak f
'da =
kullanımı neden değildir? Yeni hata, otomatik genellemenin beklediğim gibi çalışmadığı bir durumda beni uyarmada yardımcı oluyor. Ancak, bu F # derleyicisinin iki farklı sürümü arasında bir kırılma değişikliği gibi görünüyor. Bu hata iletilerinin her ikisi de aramaları boş döndü. İlgili görünen F# specification'da hiçbir şey görmedim. İlgili bölümlere işaretçiler yardımcı olabilir.
!=
F # eşitsizlik operatörünün ismi olmadığını
Link: http://stackoverflow.com/questions/9130181/what-is-the-f-syntax-for-not-equal-to – DuckMaestro