'da bir tür döndürme İki liste eklemeyi denedim, ancak türlerini kullanmayı düşündüm.OCaml
type x = int list;
let add (elem1 : int) (elem2 :int) =
elem1 + elem2;;
let add2Lists (a : x) (b : x) =
List.map2 add a b;;
Şaşırtıcı bir şekilde, add2Lists döndürür: x -> x -> int list. Bir int listesinin aslında tür ile aynı olduğunu biliyorum, ancak add2Lists'in x türünün değerlerini tam anlamıyla nasıl değerlendiririm? tiplerine bağlı olabilir belirli türde (onlar (ile değerlendirmek, aslında) dönmek işlevleri türlerini dönmek yok, Başvuru için değerleri
let add2Lists (a : x) (b : x) : x =
List.map2 add a b;;
:
Teşekkürler! Üzgünüm, dile yeni. ": X" bölümünün ne anlama geldiğini açıklayabilir misiniz? Bu, yalnızca x türünde bir değer döndürdüğümü söylüyor mu? ya da arkasında daha büyük bir anlam var. – halapgos1
': x' sözdizimi birkaç farklı yapıda görünür, fakat 'temel' anlamı her zaman ''' '' '' '' '' türünün soluna ne olduğunu varsayar. Tek soru, soldaki şeydir ... argümanlar söz konusu olduğunda, bu “a”, sonra “b” dir. Parantezler bunu açıklığa kavuşturur. Bir 'let' bildirgesinde veya ifadesinde son': x' durumunda, bir fonksiyonun (argümanlar ile) oluşturulup oluşturulmadığına bağlıdır. Eğer öyleyse, fonksiyonun sonuç tipine uygulanır. Eğer değilse, modele uygulanır (genellikle sadece tek bir değişken). – antron
Yani, 'foo: int = ...' foo'nun 'int' türünde olması gerektiği anlamına gelir, ancak' fx: int = ... '' '' '' '' '' '' '' '' '' '' '' '' '' ''' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' anlamına gelir. int'. Bu biraz kafa karıştırıcı ve sözdizimi benim favori parçası değil. – antron